rubber Geschrieben 29. April 2004 Geschrieben 29. April 2004 Hallo. Habe hier etwas Quellcode für eine Prozedur, welche eine gespeicherte Abfrage (Insert_Pc oder Insert_Produkt) solange ausführen soll, bis Daten in den Variablen (Datenfeldern) sind. Es werden zwar immer mehrere Datensätze durch die Abfrage erstellt, aber immer wieder mit den Inhalten des ersten Datensatzes. Sub Daten_in_KV() Dim CnLeistung As ADODB.Connection Dim dblDauer As Double Set CnLeistung = New ADODB.Connection Set objCmd = New ADODB.Command dHeute = Date With CnLeistung .CursorLocation = adUseClient .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Reise.mdb" .Open End With With objCmd End With For i = 0 To 7 Step 1 If Not Dauer(i) = "" Then dblDauer = CDbl(Dauer(i)) With objCmd If PC(i) = True Then .CommandText = "Insert_PC" Else .CommandText = "Insert_Produkt" .Parameters.Append .CreateParameter("Produkte", adBSTR) .Parameters("Produkte").Value = Produkt(i) End If .CommandType = adCmdStoredProc .ActiveConnection = CnLeistung .Parameters.Append .CreateParameter("Kundennummer", adDouble) .Parameters("Kundennummer").Value = KundenNr .Parameters.Append .CreateParameter("Leistungen", adBSTR) .Parameters("Leistungen").Value = Leistung(i) .Parameters.Append .CreateParameter("Heute", adDate) .Parameters("Heute").Value = dHeute .Parameters.Append .CreateParameter("Beginn", adBSTR) .Parameters("Beginn").Value = Beginn(i) .Parameters.Append .CreateParameter("Dauer", adDouble) .Parameters("Dauer").Value = dblDauer .Parameters.Append .CreateParameter("Kontakt", adBSTR) .Parameters("Kontakt").Value = Kontakt .Parameters.Append .CreateParameter("Arten", adBSTR) .Parameters("Arten").Value = Art(i) .Parameters.Append .CreateParameter("Initialen", adBSTR) .Parameters("Initialen").Value = Initialen .Parameters.Append .CreateParameter("Bemerkung", adBSTR) .Parameters("Bemerkung").Value = Bemerkung(i) .Execute Options:=adExecuteNoRecords .Cancel End With End If Next i CnLeistung.Close Exit Sub End Sub Ist das nachzu vollziehen? Wenn ja, könnt ihr mir sagen, ob ich da einen Befehl vergessen habe, oder ob das in einer Schleife nicht geht? Danke im Vorraus. rubber :confused: Zitieren
Patrick.Karre Geschrieben 29. April 2004 Geschrieben 29. April 2004 Du hast eine With-Anweisung drinnen, die du sofort wieder beendest, aber die ist nicht das Problem, die kannst du auch einfach rausnehmen. Ich bin mir nicht ganz sicher ob er richtig zählt. Du hast auch am Ende einen Abort-Befehl drinnen. Versuch mal mit einer MsgBox festzustellen, ob die einzelnen Variablen richtig gefühlt sind. Das hilft mir oft weiter. Da kannst du auch gleich kontrollieren, ob richtig gezählt wird. Gruß Patrick Zitieren
rubber Geschrieben 29. April 2004 Autor Geschrieben 29. April 2004 Also zählen tut er richtig und auch ohne die cancel funktioniert es nicht. Die Abfragen kann ich dir ja auch nochmal zeigen: PARAMETERS Kundennummer IEEEDouble, Leistungen Text ( 30 ), Heute DateTime, Beginn Text ( 5 ), Dauer IEEEDouble, Kontakt Text ( 20 ), Art Text ( 15 ), Initialen Text ( 10 ), Bemerkung Text ( 255 ); INSERT INTO PC ( KDN_NR, LEISTUNG, DATUM, ZEIT_START, ZEIT, PARTNER, ART, KUERZEL, BEMERK ) VALUES ([Kundennummer], [Leistungen], [Heute], [Beginn], [Dauer], [Kontakt], [Art], [Initialen], [Bemerkung]); PARAMETERS Kundennummer IEEEDouble, Leistungen Text ( 30 ), Produkte Text ( 255 ), Heute DateTime, Beginn Text ( 5 ), Dauer IEEEDouble, Kontakt Text ( 20 ), Art Text ( 15 ), Initialen Text ( 10 ), Bemerkung Text ( 255 ); INSERT INTO Produkt ( KDN_NR, LEISTUNG, PRODUKT, DATUM, ZEIT_START, ZEIT, PARTNER, ART, KUERZEL, BEMERK ) VALUES ([Kundennummer], [Leistungen], [Produkte], [Heute], [Beginn], [Dauer], [Kontakt], [Art], [Initialen], [Bemerkung]); Zitieren
fireworker Geschrieben 29. April 2004 Geschrieben 29. April 2004 Überprüfe mal Deine Arrays: - Dauer(i) - Produkt(i) - Leistung(i) - Beginn(i) - Art(i) - Bemerkung(i) und zum Schluß noch die Syntax: .Execute Nach meinen Erfahrungen muß noch der Command übergeben werden Zitieren
rubber Geschrieben 30. April 2004 Autor Geschrieben 30. April 2004 Also die Datenfelder stimmen alle, das heißt, die werden richtig eingelesen und die Syntax ist doch auch okay, oder? DAs Problem ist ja nur, dass die Abfrage richtig ausgeführt wird, nur dass immer der erste Datensatz geschrieben wird... Zitieren
rubber Geschrieben 3. Mai 2004 Autor Geschrieben 3. Mai 2004 Also mit nem .refresh vor der Parameterauflistung funtkioniert es. Thema kann geschlossen werden. Zitieren
wüstenkönigin Geschrieben 12. Mai 2004 Geschrieben 12. Mai 2004 meinst ein .refresh funktinoiert bei mir auch hab ne access tabelle mit 5 tabellen und lauter 1:n beziehungen soll dazu jetzt ein VB programm machen aber entweder es kommt immer nur 1 Datensatz und wenn der 2 Datensatz kommt dann nimmts mir immer die werte aus dem ersten Datensatz mit also 1 tabelle richtig die anderen 4 tabellen immer nur 1. datensatz suspekt....... wenn ich mit ADO arbeite funktionierts gar nicht mit data environment weiß ich ned wie ich auf denn 2. datensatz komme mein data grid will auch ned so wie ich und dann soll ich noch 10000000000 anderere sachen da drin verwalten hinzufügen, data report über ne suchabfrage usw.......... allmächt entweder bin ich in der schule bei VB immer krank gewesen oder ich hab 0 peil Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.