22. maj 2003 - 13:01Der er
35 kommentarer og 1 løsning
Returnering af ID efter insert
Hej
Jeg vil meget gerne have nedenstående kode til at returnere ID efter at jeg har lavet et INSERT INTO, men har desværer ikke haft heldet med mig med de eksempler jeg har fundet
Koden er :
<%
Dim strSql Dim dbInsert_connection
'#Insert the Label set dbInsert_connection = Server.CreateObject("ADODB.Connection") dbInsert_connection.Open Application("ConnectString") set rsSave = Server.CreateObject("ADODB.Recordset")
dbInsert_connection.Close set dbInsert_connection = Nothing
Session(request.querystring("boxno")) = ""
if request.querystring("docid") = "" then response.redirect "editor.asp?docid=DOCIDFROMDB" else response.redirect "editor.asp?docid=" & request.querystring("docid") end if %>
Er der en der kan løse mit problem, så ville jeg blive meget glad *S
Hmmm dk_akj, han bliver nødt til at udføre ovenstående i samme SQL sætning, som hans insert... ellers kan han risikere at få et andet id... da den altid retunere det sidst brugte id...
Faktisk troede jeg ikke at dette kunne lades sig gøre, medmindre at man lavede det i en stored procedure på SQL serveren... sådan har jeg ialtfald altid gjort...
Anyway... stkol, hvis du vil have din ASP til at performe max... så skal du lave hele dit SQL insert og update i en stored procedure... så er det også nemt at lave et output parameter med @@IDENTITY værdien..., men men... den går jo ikke hvis du bruger Access... og jeg ved ikke med MySQL om man kan lave sådan nogle der... har ikke noget erfaring med den DB... måske du ved det... erikjacobsen?
Nu har jeg lavet min kode om så den ser sådan her ud :
<%
Dim strSql Dim dbInsert_connection
'#Insert the Label set dbInsert_connection = Server.CreateObject("ADODB.Connection") dbInsert_connection.Open Application("ConnectString") set rsSave = Server.CreateObject("ADODB.Recordset")
dbInsert_connection.Close set dbInsert_connection = Nothing
Session(request.querystring("boxno")) = ""
if request.querystring("docid") = "" then response.redirect "editor.asp?docid=" & rsid("NewId") else response.redirect "editor.asp?docid=" & request.querystring("docid") end if
%>
M E N den kommer med denne fejl (Den vil heller ikke skrive den nye ID ud på skærmen)
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
Nåh @@identity ligger deroppe... set rsid= dbInsert_connection.execute("SELECT @@IDENTITY AS NewID") skal stå lige efter dbInsert_connection.execute(strSql)
Kopier koden over i din Query Analyzer og udfør den i den rette database på din SQL server... så har den en stored procedure til at inserte dine poster. Husk at varchar variablerne skal defineres således at der er plads nok til den tekst der måtte være i dem... du siger bare til hvis jeg skal lave noget ASP kode til at snakke med proceduren... hvis du da vælger at prøve løsningen ;-)
Ups... slet lige alle DECLARE variablerne... dem behøves du vist ikke... hehe... ;-)
Synes godt om
Ny brugerNybegynder
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.