Veröffentlicht 29. April 200421 j 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:
29. April 200421 j 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
29. April 200421 j 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]);
29. April 200421 j Ü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
30. April 200421 j 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...
3. Mai 200421 j Also mit nem .refresh vor der Parameterauflistung funtkioniert es. Thema kann geschlossen werden.
12. Mai 200421 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.