Datensätze anfügen und deren ID ermitteln

12/01/2009 - 15:26 von Klaus Schmidt | Report spam
Guten Tag,

ich stehe vor einem kleinen Problem: ich habe eine Access-2003-
Datenbank und schreibe dort mithilfe von AddNew (DAO) Datensàtze in
eine Tabelle. Das ist analog zum Beispiel aus der Onlinehilfe und
funktioniert.

Aaaaber:

Wenn ich die Anzahl der Datensàtze abfrage bekomme ich immer die 1
zurückgeliefert. Auch wenn die Tabelle rappelvoll ist. Ich muss vorher
ein

rs.MoveLast
rs.MoveFirst
amount = rs.RecordCount

laufenlassen, damit es hinhaut. Trotzdem wirkt das wie eine Notlösung.
Geht das auch eleganter?

Nun füge ich meine Daten ein. In der Oberflàche sehe ich ja dann
sofort die ID eines Datensatzes (AutoWert). Mit VBA ermittle ich diese
ID so:

With rs
.AddNew
!test = "irgendwelcher Text"
.Update
.Bookmark = rs.LastModified
ident = .Fields("ID")
End With

Zumindest rein theoretisch könnte ich da ja mit parallel arbeitenden
Skripten/Benutzern in Probleme laufen, oder? Gibt es da einen besseren
Weg, die ID eines Datensatzes als Rückgabewert bei seiner Erstellung
zu erhalten?

Ich hoffe ihr könnt mir helfen, vielen Dank schonmal.

Gruß, Christian
 

Lesen sie die antworten

#1 Gunter Avenius
12/01/2009 - 15:32 | Warnen spam
Hallo Klaus,

Klaus Schmidt schrieb folgendes:
Wenn ich die Anzahl der Datensàtze abfrage bekomme ich immer die 1
zurückgeliefert. Auch wenn die Tabelle rappelvoll ist. Ich muss vorher
ein

rs.MoveLast
rs.MoveFirst
amount = rs.RecordCount

laufenlassen, damit es hinhaut. Trotzdem wirkt das wie eine Notlösung.
Geht das auch eleganter?



Ist OK so.

Nun füge ich meine Daten ein. In der Oberflàche sehe ich ja dann
sofort die ID eines Datensatzes (AutoWert). Mit VBA ermittle ich diese
ID so:

With rs
.AddNew
!test = "irgendwelcher Text"
.Update
.Bookmark = rs.LastModified
ident = .Fields("ID")
End With

Zumindest rein theoretisch könnte ich da ja mit parallel arbeitenden
Skripten/Benutzern in Probleme laufen, oder? Gibt es da einen besseren
Weg, die ID eines Datensatzes als Rückgabewert bei seiner Erstellung
zu erhalten?



With rs
.AddNew
.Fields("test) = "irgendwelcher Text"
ident = .Fields("ID")
.Update
End With

Gruß
Gunter
__________________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de

Ähnliche fragen