Fehler -2147217864, Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige Werte wurden seit dem letzten Lesen ggf. geändert.

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Fehler -2147217864, Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige Werte wurden seit dem letzten Lesen ggf. geändert.

    Guten Tag zusammen,
    beim Update eines Recordsets tritt o.a. Fehler auf. Kann die Ursache nicht finden.

    z.B.

    Visual Basic-Quellcode

    1. Guten Tag zusammen,
    2. beim Update eines Recordsets tritt o.a. Fehler auf. Kann die Ursache nicht finden.
    3. z.B.
    4. 'Zuweisen SQL-String
    5. sql = "SELECT * FROM Tabelle1;"
    6. 'Öffnen
    7. Set RS = New ADODB.Recordset
    8. With RS
    9. .ActiveConnection = Conn
    10. .CursorLocation = adUseClient
    11. .LockType = adLockPessimistic
    12. .source = sql
    13. .Open
    14. End With
    15. For i = 1 To n 'Durchlaufen einer Schleife
    16. With RS
    17. .MoveFirst
    18. sql = "Feld1='" & i & "'" 'Filter für alle Objekte mit Inhalt i
    19. .Filter = sql 'Bringt jew. zw. 20-50 Datensätze
    20. Do While Not .EOF 'Filter durchlaufen
    21. debug.Print i, .Fields("ID") 'Kontrolle
    22. 'Jetzt z.B.
    23. .Fields("Feld6") = .Fields("Feld6") + 1
    24. If .Fields("Feld8") < 1 Then .Fields("Feld8") = i
    25. x = i - .Fields("Feld10") - 1
    26. If x > .Fields("Feld9") Then .Fields("Feld9") = x
    27. .Fields("Feld13") = i
    28. On Err Resume Next
    29. Err.Clear
    30. .Update 'Hier Fehler beim 2. Update eines Satzes
    31. if Err then
    32. Debug.Print Err, Err.Description
    33. stop
    34. end if
    35. .MoveNext
    36. Loop
    37. End With
    38. Next


    Der Schleifenwert i filtert zw. 20-40 Datensätze aus dem Recordset, wobei etliche Sätze mehrfach upgedatet werden.
    Das 2. Update eines Satzes bringt den Fehler.
    Weiss nicht, was ich da jetzt falsch mache.
    Wäre wirklich dankbar für einen Tipp.
    Gruss
    Aus dem Kopf 3 Ansätze:
    1. Ändere mal den Locktype
    2. Probiere mal Updatebatch statt update
    3. Wenn das alles nicht hilft. Nach jedem Durchgang durch die Schleife, den Recordset schließen und neu öffnen.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).