Avatar billede dresen Nybegynder
20. juni 2003 - 11:14 Der er 8 kommentarer og
1 løsning

Hvordan henter man insert_ID i Access

Hej alle.

Hvis man laver en "insert into..." hvor primær nøglen er en autoincrement, hvordan får man så efterfølgende hentet primær nøglen på den record man lige har indsat?

I MySQL gøres det med mysql_insert_id.

Hvordan gøres det i MS Access ?

På forhånd mange tak!
Avatar billede mikkelbm Nybegynder
20. juni 2003 - 11:22 #1
Kan du ikke bruge en Max()?

"SELECT MAX(id) FROM Tabel"
Avatar billede kimiwan Nybegynder
20. juni 2003 - 11:23 #2
først indsætter du din record, derefter (på samme connection!) select'er du @@identity i et nyt databasekald.  det giver dig identity'en af den senest indsatte record.
Avatar billede mikkelbm Nybegynder
20. juni 2003 - 11:26 #3
kimiwan >

Kan du ikke gi' et eksempel på det. Den kender jeg ikke...
på forhånd tak.
Avatar billede kimiwan Nybegynder
20. juni 2003 - 11:29 #4
jeg kan gi' dig et eksempel i asp:

http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=79
Avatar billede mikkelbm Nybegynder
20. juni 2003 - 11:32 #5
det faktisk ganske smart... og så bliver min metode med max() også lige jordet... :)
Avatar billede juks Novice
20. juni 2003 - 11:35 #6
hvad . med
me.record
Avatar billede dresen Nybegynder
20. juni 2003 - 15:10 #7
Mange tak kimiwan.

Men jeg har stadig et problem. Den returnerer 0 hver gang.

jeg har prøvet nogle forskellige kombinationer og de returnerer alle 0.

f.eks.

sql="insert into actions..."
set rs=objConn.execute(sql)
set rs=objConn.execute("SELECT @@IDENTITY")
id=rs(0)

sql="insert into actions..."
set rs=objConn.execute(sql)
set rs=objConn.execute("SELECT @@IDENTITY as ID")
id=rs("ID")

sql="insert into actions..."
set rs=objConn.execute(sql)
set rs=objConn.execute("SELECT @@IDENTITY from actions")
id=rs(0)

sql="insert into actions..."
set rs=objConn.execute(sql)
set rs=objConn.execute("SELECT @@IDENTITY as ID from action")
id=rs("ID")

Hvad skal man så gøre? kan det have noget at gøre med om man skriver med eller uden "set" foran?
Avatar billede kimiwan Nybegynder
20. juni 2003 - 21:13 #8
det ville jeg ikke umiddelbart tro, men du skal ikke bruge et recordset til noget, når ud bare indsætter en record.

objConn.execute("insert into actions blah blah blah")
set rs = objConn.execute("select @@identity as actionid")
response.write rs("actionid")

hvis det ikke virker, må du lige sige til - så må jeg se, om jeg kan finde et eksempel, der er testet.
Avatar billede dresen Nybegynder
25. juli 2003 - 11:22 #9
Hej Kiwiwan.

Den giver stadig 0 når jeg gør præcis som du skriver.
Jeg begynder at mistænke at det kan hænge sammen med hvilken version man har eller noget i den stil.

Har du et testet eksempel du kan poste?
Det ville være super ;)
På forhånd mange tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester