Avatar billede eksperten1 Nybegynder
14. oktober 2003 - 14:34 Der er 7 kommentarer og
2 løsninger

@@IDENTITY returnerer NULL

SQL Server 2000, IIS5
I en ASP side laver jeg en INSERT, og forsøger umiddelbart bagefter at hente dne nye UID. Men den returnerer NULL hver gang, selv om der bliver oprettet en record.

Nu har jeg snart stirret mig blind på fejlen, er der en venlig sjæl som gider at kigge med og hjælpe mig ?

ASP Kode :
strSQL = "INSERT INTO region (oprettet_af, magasinid, region, sideantal, left_start, right_start, placering, nummerering, bladsider) VALUES " &_
    "('"& strUserid &"','"& gf("owner") &"','"& gf("region") &"',"& gf("pagecount") &","& gf("left_start") &","& rightStart &","& gf("placering") &","& gf("nummerering") &","& bladsider &");"
    Set DBconn = Server.CreateObject("adodb.connection")
    DBConn.Open accessconnect
    Response.write strSQL
    DBConn.Execute(strSQL)
    Set RS = DBConn.Execute("SELECT @@IDENTITY AS dennyid;")
    newid = RS("dennyid")
    Response.write "<br>newid ="& newid &"<br>"

Og her er den kode der returneres:
INSERT INTO region (oprettet_af, magasinid, region, sideantal, left_start, right_start, placering, nummerering, bladsider) VALUES ('{8611304F-BC34-419E-8709-879F93888A19}','{256FE084-8434-4CF9-B338-7A8131719A6D}','1',16,28,0,1,1,0);
newid =


På forhånd tak fra mine trætte øjne.

mvh Mark
Avatar billede arne_v Ekspert
14. oktober 2003 - 14:44 #1
Du laver en ny connection.

Det må du ikke !

@@identity returnerer sidste auto incrment key for denne connection !!
Avatar billede arne_v Ekspert
14. oktober 2003 - 14:46 #2
Glem det.

Jeg har set forkert.

Du bruger samme connection.

Jeg undskylder.
Avatar billede eksperten1 Nybegynder
14. oktober 2003 - 14:49 #3
OK det sker...
Avatar billede the_bma_man Nybegynder
14. oktober 2003 - 14:56 #4
Får du rent faktisk indsat recorden?
Hvis ikke er det jo fair nok, at den ikke kan give dig ID'en herpå.
Avatar billede netro Nybegynder
14. oktober 2003 - 15:05 #5
Avatar billede eksperten1 Nybegynder
14. oktober 2003 - 16:47 #6
>the_bma_man Der bliver oprettet en record.
Avatar billede goose Nybegynder
14. oktober 2003 - 18:21 #7
Prøv lige og ret denne linie:
Set RS = DBConn.Execute("SELECT @@IDENTITY AS dennyid;")

- til:
Set RS = DBConn.Execute("SELECT @@IDENTITY AS dennyid FROM region;")

Såvidt jeg kan se fortæller du den ikke hvilken tabel den skal finde det nyeste id.

/Goose
Avatar billede netro Nybegynder
14. oktober 2003 - 18:23 #8
SQL = "Set NoCount ON; Insert Into Tabel(Felt) Values('Værdi'); Select @@Identity"
Set rs = Conn.Execute(SQL)

Response.Write "SidsteID: " & rs(0)

(fra mit link)
Avatar billede eksperten1 Nybegynder
15. oktober 2003 - 09:08 #9
> Desværre fungerer den heller ikke, den var mit allerførste udkast til kaldet, men den returnerer NULL.
>goose, samme svar som overnfor, fungerer desværre ikke.

Jeg ved ikke hvad der sker, nu har jeg ændret det så jeg kører med et åbent recordset jeg opdaterer og så henter UID bagefter, det fungerer men er jo temmelig meget langsommere, men sådan er det så bare.

Jeg fordeler pt. ligeligt, som tak for forsøgene.

mvh Mark
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
Kurser inden for grundlæggende programmering

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