Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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.

Geschrieben

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...

Geschrieben

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

Geschrieben

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 :D :OD :OD ???

edit:

ps: danke für die schnellen hilfeversuche und kannst du dir das erklären?

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...