Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Access: Fehler 3146 ODBC--Call failed

Empfohlene Antworten

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?

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.

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

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

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?

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.