Avatar billede Lasse Novice
09. oktober 2001 - 18:37 Der er 9 kommentarer og
2 løsninger

udtræk af autonummer

Jeg har to tabeller. Den ene tabel a har en primærnøgle a.prim(identity(1,1)), og tabel b har en fremmednøgle b.frem der referer til a.prim.

Jeg skal nu indsætte noget i begge tabeller fra ASP. Først indsætter jeg noget i tabel a, og bagefter drager jeg a.prim ud(pga. identity(1,1)) for at indsætte det i b.

HVORDAN GØR JEG DEN NEDERSTE DEL....? 
Avatar billede Lasse Novice
09. oktober 2001 - 18:42 #1
og det skal være med transaktioner... tak
Avatar billede z42cool Nybegynder
09. oktober 2001 - 19:12 #2
Noget i stil med følgende!

<%

Dim conn, rs, pKey
Set conn = Server.CreateObject(\"ADODB.Connection\")
Set rs = Server.CreateObject(\"ADODB.Recordset\")
conn.open(your_conn_sting_here)
conn.BeginTrans

rs.open(\"INSERT INTO a (SomeField) VALUES (\'Some Value\')\", conn)
rs.Close()
rs.open(\"SELECT Max(a.prim) AS pKey FROM a\")
pKey = rs(\"pKey\").value
rs.Close()
conn.execute(\"INSERT INTO b (MyFKey) VALUES (\" & pKey & \")\")

conn.CommitTrans


%>
Avatar billede Lasse Novice
09. oktober 2001 - 19:44 #3
jeg vil lige kigge på det lidt senere.. takker for svaret.
Avatar billede proaccess Nybegynder
09. oktober 2001 - 20:00 #4
Public Function testTRANSACTION()
  Conn.Execute \"CREATE TABLE ProAccess1 (ID IDENTITY CONSTRAINT PrimaryKey PRIMARY KEY, Navn VARCHAR(50))\"
  Conn.Execute \"CREATE TABLE ProAccess2 (ID Long, Tidspunkt DATETIME, TEST IDENTITY CONSTRAINT PrimaryKey PRIMARY KEY)\"
  Conn.Execute \"BEGIN TRANSACTION\"
  Conn.Execute \"INSERT INTO ProAccess1 (Navn) VALUES (\'ProAccess\')\"
  Conn.Execute \"INSERT INTO ProAccess2 (ID, Tidspunkt) VALUES (@@IDENTITY, Now())\"
  Conn.Execute \"COMMIT TRANSACTION\"
End Function

Hvor du selvfølgelig har din Connection opsat... (Conn)

Du kan altså bruge @@IDENTITY til at \"holde\" værdien for seneste autonummer...
Avatar billede proaccess Nybegynder
09. oktober 2001 - 20:01 #5
De første 2 .execute\'s er kun med for at oprette tabeller (til test), de skal selvfølgelig IKKE køres hver gang du indsætter data...
Avatar billede proaccess Nybegynder
12. oktober 2001 - 09:05 #6
Kunne du bruge svaret...???
Avatar billede Lasse Novice
12. oktober 2001 - 17:13 #7
ja, jeg har ikke lige fået kigget, men vil gøre det inden længe...

proaccess... jeg er mest til dit eksempel, men det er desværre komplikationer ved det...
1. Hvordan kalder jeg en stored procedure fra en ASP sætning, og hvordan ser jeg på resultatet(om det er en rollback/commit). Jeg skal nemlig sige dig at jeg samtidig med dette uploader en fil, og derfor vil jeg gerne vide om jeg skal slette den igen eller bare lade den ligge...!!!
Avatar billede proaccess Nybegynder
13. oktober 2001 - 08:55 #8
1. Du bruger IKKE hele funktionen i ASP, men skriver dine Conn.Execute\'s direkte i ASP. (efter oprettelse af Conn-connectionen)

2. Nu er jeg ikke den bedste til ASP, så det du må nok få hjælp til andetsteds...

Avatar billede Lasse Novice
10. december 2001 - 09:43 #9
nope, proaccess... det virker ikke... :-(
Avatar billede proaccess Nybegynder
10. december 2001 - 10:14 #10
Sorry ;-(

Så er der vist ikke mere jeg kan gøre...  Måske skulle du selv svare på dette... og så oprette et spg. mere, hvor Terry og Benny kunne komme på banen...

Avatar billede Lasse Novice
10. december 2001 - 16:49 #11
ok... takker anyway
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
Computerworld tilbyder specialiserede kurser i database-management

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