Avatar billede reason Nybegynder
17. januar 2001 - 14:25 Der er 11 kommentarer

LAST_INSERT_ID() ???

når jeg gør det her

var SQL=\"INSERT INTO ....\"
rs = Server.CreateObject(\"ADODB.Recordset\")
rs = DB.Execute(SQL)

SaveId=rs.LAST_INSERT_ID()

så for jeg flg. fejl
Object doesn\'t support this property or method på linjen med rs.LAST_INSERT_ID()

hvad gør jeg galt?
Avatar billede dudal Nybegynder
17. januar 2001 - 14:50 #1
Set Rs = DB.Execute(\"Select @@IDENTITY AS NewId FROM tabel\")
intNewId = Rs(\"NewId\")
Rs.Close

/Jesper
Avatar billede reason Nybegynder
17. januar 2001 - 14:54 #2
sorry jesper men jeg har lavet sådan en work around og det er det jeg gerne vil væk fra
Avatar billede reason Nybegynder
17. januar 2001 - 15:38 #3
eller skal bruge mysql_insert_id på en eller anden måde?
Avatar billede sbarnney Nybegynder
17. januar 2001 - 18:03 #4
SaveId = (SELECT MAX(ID) FROM TABEL)

Stig
Avatar billede dudal Nybegynder
17. januar 2001 - 21:40 #5
Stig -> Den holder ikke. Hvis der er 2 brugere som indsætter en post på samme tid kan du få den anden persons id.

@@IDENTITY eller mySql\'s LAST_INSERT_ID() holder styr på hvilken bruger der har indsat hvad via den åbnede connection til databasen.

Mvh
Jesper
Avatar billede sbarnney Nybegynder
17. januar 2001 - 22:45 #6
Jesper - hvis man køre det som stored procedure, vil man ikke komme galt afsted.

Stig
Avatar billede reason Nybegynder
17. januar 2001 - 23:18 #7
øhh jesper jeg tror jeg har misforstået dig
prøver lige dit forslag i morgen så hvis du svare igen så kan du få dine points
Avatar billede sbarnney Nybegynder
18. januar 2001 - 09:00 #8
Jesper har faktisk helt ret, hvis man ikke har direct adgang til serveren kan man bruge @@IDENTITY.

Her er et uddrag:

-----------------------------------------
@@IDENTITY (T-SQL)
Returns the last-inserted identity value.

Syntax
@@IDENTITY

Return Types
numeric

Remarks
After an INSERT, SELECT INTO, or bulk copy statement completes, @@IDENTITY contains the last identity value generated by the statement. If the statement did not affect any tables with identity columns, @@IDENTITY returns NULL. If multiple rows are inserted, generating multiple identity values, @@IDENTITY returns the last identity value generated. If the statement fires one or more triggers that perform inserts that generate identity values, calling @@IDENTITY immediately after the statement returns the last identity value generated by the triggers. The @@IDENTITY value does not revert to a previous setting if the INSERT or SELECT INTO statement or bulk copy fails, or if the transaction is rolled back.

Examples
This example inserts a row into a table with an identity column and uses @@IDENTITY to display the identity value used in the new row.

INSERT INTO jobs (job_desc,min_lvl,max_lvl)

VALUES (\'Accountant\',12,125)

SELECT @@IDENTITY AS \'Identity\'

------------------------------------------------
Stig
Avatar billede reason Nybegynder
18. januar 2001 - 13:59 #9
det her
var SQL=\"SELECT \\@\\@IDENTITY AS NewId FROM Article\"
rs = Server.CreateObject(\"ADODB.Recordset\")
rs = DB.Execute(SQL) <--linje 148

giver det her

Microsoft OLE DB Provider for ODBC Drivers error \'80040e09\'

[TCX][MyODBC]You have an error in your SQL syntax near \'@IDENTITY AS NewId\' at line 1

/admin/Article.asp, line 148
Avatar billede dudal Nybegynder
18. januar 2001 - 14:36 #10
Ah ok. Det er fordi @@identityer en MS SQL ting.
Prøv det her i stedet:

var SQL=\"SELECT last_insert_id() AS NewId FROM Article\"

/Jesper

Avatar billede reason Nybegynder
18. januar 2001 - 15:00 #11
SaveId=String(rs(\"NewId\")) <-- linje 149

Microsoft OLE DB Provider for ODBC Drivers error \'80004005\'

[Microsoft][ODBC Driver Manager] Driver does not support this parameter

/admin/Article.asp, line 149
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