MySQL und Access Datensatz

Hallo,

ich habe in meiner Access-Datenbank Tabelle eine Tabelle mit etwas über 1000 Datensätzen. Wenn ich in meinem Code „rs.MoveLast“ schreibe, funktioniert das auch. Aber nur bis zu einer gewissen grenze von datensätzen. Nachdem ich einige neue Datensätze hinzugefügt habe(bis jetzt sind dort 1147 Datensätze), funktioniert das nicht mehr. Er geht immer nur bis zum vorletzten Datensatz und den letzten sieht er nicht mehr. Ich habe schon vieles versucht(Stopen von MySQL, den PC herunter gefahren, den Code versucht zu ändern) aber irgendiw komme ich nicht zu einem Ergebniss!

Hier mal einen Teil meines Codes:
.
.
.
rs1.CursorLocation = adUseClient
rs1.Open „Select * from Reparatur_Verwaltung“, cnsql, adOpenDynamic, adLockOptimistic
rs2.CursorLocation = adUseClient
rs2.Open „Select * from WinSys“, cnsql, adOpenDynamic, adLockPessimistic
With rs3
'Festlegen des benutzten Index der Datensatzgruppe.
Rem .Index = „Primärschlüssel“
'Legt den Ort des Cursors fest.
.CursorLocation = adUseClient
'Öffnet die Datensatzgruppe.
.Open „Current_User“, cnjet, adOpenKeyset, adLockOptimistic, adCmdTableDirect
End With
rs4.CursorLocation = adUseClient
rs4.Open „Select * from Firmen_informationen“, cnsql, adOpenDynamic, adLockPessimistic

If rs1.RecordCount = 0 Then
Nr = rs2(„RepNr_von“) + 1
If Nr = 0 Then
MsgBox „Es ist ein Fehler aufgetreten! Erfassung wird abgebrochen! Bitte erneut versuchen!“, vbCritical, AppName
GoTo Ende:
End If
rs1.AddNew
rs1(„RepNr“) = Nr
rs1(„Erfasser“) = rs3(„User“)
rs1(„Eingangs_Datum“) = Date
rs1(„Verpackung“) = „3“
rs1(„Status“) = „1“
rs1(„Ersatzteilpreis“) = 0
rs1(„Arbeitszeit“) = 0
rs1(„Pauschalpreis“) = 0
rs1(„Versandkosten“) = 0
rs1(„Gesamtpreis“) = 0
rs1(„Garantie“) = 0
rs1(„Kostenvoranschlag“) = 0
rs1(„Reklamation“) = 0
rs1(„timestamp“) = Now
rs1.Update
Else
rs1.MoveLast 'hier ist das Problem !!!
Nr = rs1(„RepNr“)
Nr = Nr + 1
If Nr = 0 Then
MsgBox „Es ist ein Fehler aufgetreten! Erfassung wird abgebrochen! Bitte erneut versuchen!“, vbCritical, AppName
GoTo Ende:
End If
If Nr >= rs2(„RepNr_bis“) - 10 Then
MsgBox „Es sind fast keine Reparatur- Nummern mehr frei, bitte den Datenbank- Administrator kontaktieren!“, vbCritical, AppName
End If
rs1.AddNew
rs1(„RepNr“) = Nr
rs1(„Erfasser“) = rs3(„User“)
rs1(„Eingangs_Datum“) = Date
rs1(„Verpackung“) = „3“
rs1(„Status“) = „1“
rs1(„Ersatzteilpreis“) = 0
rs1(„Arbeitszeit“) = 0
rs1(„Pauschalpreis“) = 0
rs1(„Versandkosten“) = 0
rs1(„Gesamtpreis“) = 0
rs1(„Garantie“) = 0
rs1(„Kostenvoranschlag“) = 0
rs1(„Reklamation“) = 0
rs1(„timestamp“) = Now
rs1.Update
End If
.
.
.
Ich hoffe mir kann jemand bei diesem Problem helfen.

Gruß Matthias

Hellau,

ohne mir jetzt Deine Coding bis ins letzte Detail durchzustudieren ist mir aufgefallen, dass Deine SQL-Statements ohne ORDER BY erfolgen.

Das bedeutet, das Deine Datensätze willkürlich nacheinander gereiht werden. Ja, ja ich weiss … es funktioniert auch ohne ORDER BY … das stimmt aber nur zu 99 Prozent, da hilft auch kein PRIMARY KEY!!!

Die Aussage: Die Datensätze kommen in der Reihenfolge wie sie gespeichert worden sind stimmt NICHT!!!

Daher: ORDER BY = 100 Prozent Anfang und Ende da, wo Du es willst.

greets from michL (vienna)

Hallo,

danke für den Tipp! Ich werd das mal testen. Ich habe aber auch schon herausgefunden(hoffe ich) woran es liegt. ICh hatte meine Access Datenbank nicht vollständig Kompiliert. Als ich es gemacht habe, konnte ich 50 Datensätte neu anlegen. Mehr wollte ich nicht machen, da ich noch andere sachen machen muß. Aber deine sache werde ich zur sicherheit auch noch mal eingeben.

Danke dafür!

Gruß Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

gib mir bescheid, ob’s funktioniert…
… weil es mich interessiert!
greets from michL

Hi,

habs raus…es ist die „Order By“ Klausel…herzlichen dank!!!

Gruß Matthias

… weil es mich interessiert!
greets from michL