Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

VB 6.0 - Autowert in Access

Anwender / 4 Antworten / Flachansicht Nickles

Hallo. Wiederaml ein Access-Problem: Wie kann ich in VB herausfinden, welche Zahl der Autowert in der Access-DB als nächstes generiert? Ich muss nach dem Befehl rs.AddNew wissen, welche ID generiert wird oder eben wurde.

bei Antwort benachrichtigen
Sovereign Sylvia Anwender „Hi Sylvia Danke für deine Antwort. Ich suche jedoch eine Möglichkeit den...“
Optionen

Hi anwender,
in der Hilfe für VB6 fand ich unter der Rubrik "Microsoft Jet Database Engine Programmer's Guide" den folgenden kurzen Beitrag (Auszug):
"Auto-Increment Fields
[...] Because the value of the next Counter number is stored in the table-header page of the database file, when adding a record to a table that has a Counter data type (called an AutoNumber data type in Microsoft Access 95 and 97), Microsoft Jet locks that page. This occurs in Microsoft Jet 2.x when inserting a record into a table, but is not a problem when using Microsoft Jet 3.0 and 3.5."

Ich habe keine Ahnung, wo sich die Table Header Page befindet und wie man darauf zugreifen kann. Neben den sichtbaren Tabellen hat ACCESS (2000 in diesem Fall) noch weitere Tabellen, die System-Objecte beinhalten. Man kann aber nicht so einfach per Recordset-Methode darauf zugreifen (ich hab's probiert), und eine andere Methode weisz ich nicht.

Was ich vermute ist, dass der Autonumber-Wert nichts ist als eine fortlaufende Zählung aller neu hinzugefügten Records, unabhängig davon, ob die Records noch existieren oder bereits gelöscht wurden. Der Autonumber-Zähler fängt nämlich nicht wieder bei 1 an, nachdem alle in einer Tabelle vorhandenen Records gelöscht und ein neuer Record hinzugefügt wird.
Somit bietet sich eigentlich eine ziemlich einfache Lösung deines Problems an: Lade alle Records einer Tabelle in ein Recordset, wobei während des Ladens die Sortierung des Autonumber-Feldes absteigend erfolgt. Liesz den Autonumber-Wert des ersten Records im Recordset aus und addiere 1 - das wird dann der nächste Autonumber-Wert sein. Probier's mal aus und lass mich wissen, ob du damit klarkommst.

Grusz Sylvia




[Diese Nachricht wurde nachträglich bearbeitet.]

Mein sz streikt heute wieder ------ Nobody is perfect, and we prove it every day.
bei Antwort benachrichtigen