Rubrik: Datenbanken · ADO | VB-Versionen: VB5, VB6 | 10.07.07 |
AutoWert ermitteln (Access, ADO) Dieser Tipp verrät, wie sich nach dem Hinzufügen eines Datensatz dessen Autowert-Feld ermitteln lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 26.410 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Wenn Sie mit einer Access-Datenbank und dem ADO-Zugriff arbeiten haben Sie sich sicherlich schon öfter gefragt, wie sich der Autowert einer Tabelle abfragen lässt, gleich nachdem man einen neuen Datensatz hinzugefügt hat.
Das Hinzufügen eines Datensatzes selbst kann bekanntlich auf zwei Varianten erfolgen:
- a) AddNew/Update-Anweisung (Recordset-Objekt)
- b) INSERT INTO-Anweisung (SQL-Statement)
Je nachdem, welche Variante Sie verwenden, lässt sich der Autowert des gerade hinzugefügten Datensatzes wie folgt ermitteln.
Variante a: AddNew/Update-Anweisung (Recordset-Objekt)
Hier können Sie den Autowert direkt nach der Update-Anweisung ermitteln - vorausgesetzt die Autowert-Spalte ist Bestandteil der SQL-Anweisung, die Sie zum Erstellen des Recordsets verwendet haben.
Beispiel
' Recordset erstellen Dim oRs As New ADODB.Recordset With oRs .CursorLocation = adUseClient .Open "SELECT ID, Name, Firma, ... FROM KUNDEN", oConn, _ adOpenStatic, adLockOptimistic End With
' neuen Datensatz hinzufügen und Autowert ermitteln With oRs .AddNew .Fields("Name") = "..." .Fields("Firma") = "..." ... .Update ' Autowert ermitteln nID = .Fields("ID") End With
Variante b: INSERT INTO-Anweisung (SQL-Statement)
Wenn Sie die INSERT INTO-Anweisung zum Hinzufügen von Daten verwenden, lässt sich der Autowert über die SQL-interne Funktion "MAX(AutowertFeld)" ermitteln.
Beispiel
' neuen Datensatz hinzufügen oConn.Execute "INSERT INTO KUNDEN (Name, Firma) VALUES ('...', '...') ' Autowert des gerade hinzugefügten Datensatzes ermitteln Dim oRs As ADODB.Recordset Set oRs = oConn.Execute("SELECT MAX(id) FROM KUNDEN", , adCmdText) nID = oRs(0)