Avatar billede longgaard_at_work Nybegynder
03. januar 2008 - 15:23 Der er 13 kommentarer og
1 løsning

Opsamle værdien fra autonummererng på nyoprettet post

Hej

Jeg er lidt i knibe - hvordan opsamler jeg værdien af et autonummererings på en nyoprettet post?

Jeg har lavet en DoCmd.RunSQL som opretter posten og det går fint, med autonummerering på ID feltet.

Lige efter skal jeg oprette poster i andre tabeller, som refererer til den nye post i den første tabel.... Men hvordan ved jeg hvilket nummer autonummereringen er kommet til?
Avatar billede michael_stim Ekspert
03. januar 2008 - 15:30 #1
Er det ikke noget med INSERT INTO tabel (id,....) VALUES(@@id,..);
Avatar billede michael_stim Ekspert
03. januar 2008 - 15:40 #2
Avatar billede a1a1 Novice
03. januar 2008 - 15:56 #3
efter din insert bruger du:
select @@identity (og så får du værdien)
Avatar billede longgaard_at_work Nybegynder
03. januar 2008 - 16:41 #4
Måske har i ret, men jeg får det ikke lige til at virke - måske er det noget med syntaxen som gør en forskel mellem SQL og Access
Avatar billede longgaard_at_work Nybegynder
03. januar 2008 - 16:48 #5
Jeg har prøvet med:
DoCmd.RunSQL ("SELECT @@IDENTITY AS NewID;")
llID1 = loRs.Fields("NewID").Value

Men får fejlen: Runtime error 2342
Handlingen kørSQL kræver et argument, der består af en SQL-sætning

Hvis jeg blot skriver: SELECT @@IDENTITY AS NewID
får jeg en syntaxfejl
Avatar billede a1a1 Novice
03. januar 2008 - 19:39 #6
prøv med SELECT @@IDENTITY FROM <table>
den anden plejer dog at virke (på mssql)
Avatar billede terry Ekspert
04. januar 2008 - 12:08 #7
In Access you cant as far as I know, or at least I've never seen it used, use @@IDENTITY

Try SELECT Max(ID) FROM .....

but remember that if the dB is used by more than one user there is a slight risk that two records can get inserted at the same time.
Avatar billede terry Ekspert
04. januar 2008 - 12:08 #8
You can also use

Dmax("ID", "TableNameGoesHere")
Avatar billede terry Ekspert
04. januar 2008 - 12:14 #9
Avatar billede longgaard_at_work Nybegynder
04. januar 2008 - 14:29 #10
michael stim/ a1
Ingen af de kombinationer som jeg kan finde på at bruge @@IDENTITY i virker i men Access 2003.

terry
Tror at du har ret med hensyn til @@IDENTITY
Jeg har ikke så gode erfaringer med "SELECT" sætninger i VB, måske er det ændret i de nye versioner som er kommet siden jeg baksede database sidst
Men da "Dmax("ID", "TableNameGoesHere")" virker, og der ikke skal være mange samtidige brugere på basen, bliver det mit valg.
Tak
Avatar billede terry Ekspert
04. januar 2008 - 15:00 #11
In most cases Dmax will work, just make sure its directly after the insert
Avatar billede terry Ekspert
04. januar 2008 - 15:00 #12
You can close the question by accepting my answer
Avatar billede longgaard_at_work Nybegynder
08. januar 2008 - 10:51 #13
Prøvede at accepterer, men den ville ikke lige den dag, prøver igen
Avatar billede terry Ekspert
08. januar 2008 - 11:57 #14
Thanks its closed now :o)
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