HELLmut Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 folgende situation: ich will daten aus einem recordset in ne tabelle schreiben. die daten aus dem rs kommen von ner sql-pass-through-abfrage. diese is auch in ordnung, da die abfrage die richtigen werte zurückliefert. code ausschnitt Do While Not rs1.EOF laufnr1 = laufnr1 + 1 rstab.AddNew rstab!lfdnr = laufnr1 rstab.Update rs1.MoveNext Loop wenn ich das update weglasse läuft das dind einwandfrei durch, durch ne msgbox(laufnr1) weiss ich das er 178 mal durch die schleife is, aber natürlich speichert er die datensätze nicht in die tabelle. lass ich es nicht weg kommt oben genannter fehler und er schreibt nur den ersten datensatz, also ne eins in die tabelle. der fehler tritt dann bei dem rs1.movenext auf. kann mir die sache nicht erklären, da das update sich ja nicht auf rs1 bezieht. kann mir wer helfen? Zitieren
Alrik Fassbauer Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Kommt der Fehler EXAKT bei rs.MoveNext ? Ich persönlich vermute, daß sich der Zeiger nicht dort befindet, wo er sein sollte. Beispiel: Stell dir vor, der Zeiger ist am letzten ( ! ) Datensatz angelangt (wodurch auch immer) und du sagst "MoveNext"... Ich hab selber einige Probleme mit ODBC gehabt... UPDATE: Ich glaube, ich habs: Du hast geschrieben: laufnr1 = laufnr1 + 1 und das VOR dem ersten Durchlauf ! Das heißt (wenn ich es richtig interpretiert habe), daß du immer einen Datensatz voraus bist, z.B. statt 1 bist du auf 2 oder so. Zitieren
HELLmut Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 ja er kommt exakt bei rs1.movenext das laufnr1=laufnr1+1 spielt keine rolle, da er ja nur in der rstab aufsteigend durchnummerieren soll wieviele datensätze rs1 hat. da ich laufnr vorher auf 0 setzte sollte er halt bei 5 datensätzen 1 2 3 4 5 in die spalte schreiben wenn ich update weglassse, zählt er korekt hoch, aber er speichert natürlich nicht. und wenn ichs nicht weglasse (als einzigen unterschied) dann kommt der fehler gleich beim ersten rs1.movenext spontan hätte ich gedacht das es vielleicht ein timeout is oder so... Zitieren
Alrik Fassbauer Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Ich bin mir ziemlich sicher, daß das etwas mit dem Zeiger zu tun hat, wenn er bei movenext weitergesetzt wird. Gib doch einfach mal die Zahl aus ! Dann siehst du ja, wo er steht ! Zitieren
HELLmut Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 das kontrolliere ich gleich mal, aber tatsache ist: ohne rsdat.update wird die schleife 178 mal durchlaufen genau bis rs1.eof und mit rsdat.update wird sie einmal durchlaufen mit beschrieben fehler bei rs1.movenext Zitieren
Alrik Fassbauer Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Was macht denn das Update ? Das schreibt einen Wert in die Datenbank bzw. in das jeweilige Feld ? Zitieren
HELLmut Geschrieben 21. Mai 2002 Autor Geschrieben 21. Mai 2002 ja genau, nur das es halt eigentlich nur was mit ner tabelle macht, die weder mit odbc noch mit dem movenext was zu tun hat. aber jetzt scheint es zu gehen und, soll mal einer checken: code vorher: rs1.MoveFirst Do Until rs1.EOF laufnr1 = laufnr1 + 1 rstab.AddNew rstab![laufende Nummer] = Format(laufnr1, "000000") rstab.Update rs1.MoveNext Loop geht net, wie vorhin code nachher: rs1.MoveFirst Dim anzahl As Integer anzahl = 0 Do Until rs1.EOF anzahl = anzahl + 1 rs1.MoveNext Loop rs1.MoveFirst Do Until rs1.EOF laufnr1 = laufnr1 + 1 rstab.AddNew rstab![laufende Nummer] = Format(laufnr1, "000000") rstab.Update rs1.MoveNext Loop geht einwandfrei ????:OD :OD :OD :OD ??? edit: ps: danke für die schnellen hilfeversuche und kannst du dir das erklären? Zitieren
Alrik Fassbauer Geschrieben 21. Mai 2002 Geschrieben 21. Mai 2002 Jein. Ich sehe, daß du in deiner ersten Schleife zum ersten Datensatz gegangen bist, dann (in der Schleife) zum letzten, und nach dieser Zählschleife mit der Anzahl wieder zum ersten Datensatz. Das wird es wahrscheinlich sein, vermute ich; uns hat mal ein Dozent gesagt, daß man vor dem auslesen manchmal zuerst zum letzten Datensatz gehen soll, und dann zum ersten, weil es sonst manchmal seltsame Effekte geben könne. So habe ich das jedenfalls in Erinnerung; ist auch schon wieder etwa ein Jahr her. Du hast es jedenfalls gemacht: Ersten Datensatz -> letzter Datensatz -> wieder erster Datensatz, und DANN ausgelesen. *Richtig* erklären kann ich es mir nicht. 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.