Har sökt i forumet men hittar inget bra svar på detta.
sql = "INSERT INTO upphovsman(fornamn,efternamn,land,fodelsear) VALUES('" & upload.form("nyupphovsman_fornamn") & "','" & upload.form("nyupphovsman_efternamn") & "','" & upload.form("nyupphovsman_land") & "','" & upload.form("nyupphovsman_fodelsear") & "')"
set tmpRS = getDB().execute(sql)
sql = "SELECT @@IDENTITY AS test"
set tmpRS2 = getDB().execute(sql)
id2 = tmpRS2("test")
Variabeln id2 blir 0 hur jag än gör. Beror det på min DB-funktion, getDB()? Den ser ut så här:
function getDB()
set getDB = server.createobject("Adodb.connection")
getDB.open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=servernamn;PORT=3306;DATABASE=dbnamn; USER=anvandare;PASSWORD=losenord;OPTION=16384;"
end function
Den borde ju inte stängas i alla fall mellan insertarna liksom. Jag kör ASP mot MySQL 5.
Litet tillägg: Tabellen 'upphovsman' har alltså ett auto_increment-fält som heter 'upphovsmanID'.
PS. Finns någon fin (gärna svensk) tutorial på Stored Procedures i MySQL 5 så man slipper de här problemen? Ge gärna tips! DS.
emissionMedlem sedan dec. 19996 721 inlägg Så ska du absolut inte använda getDB, eftersom du inte kan stänga kopplingen. Garbage collection-systemet är inte något att falla tillbaka på.
set conn=getDB()
sql = "INSERT INTO upphovsman(fornamn,efternamn,land,fodelsear) VALUES('" & upload.form("nyupphovsman_fornamn") & "','" & upload.form("nyupphovsman_efternamn") & "','" & upload.form("nyupphovsman_land") & "','" & upload.form("nyupphovsman_fodelsear") & "');SELECT @@IDENTITY AS test"
set tmpRS = conn.execute(sql).NextRecordset
id2 = tmpRS ("test")
TravoniMedlem sedan okt. 20041 556 inlägg Travoni: Det gick lika bra bra med @@IDENTITY
emission: Well, I did not know that :birp
TravoniMedlem sedan okt. 20041 556 inlägg Japp, du måste hämta det senaste inlägget i samma scope.
TravoniMedlem sedan okt. 20041 556 inlägg Error...
Jag gör precis enligt emissions förslag, men får detta fel:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-5.0.15-standard-log]You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near ';SELECT @@IDENTITY' at line
Har testat både med @@IDENTITY och last_insert_id()
och både med och utan alias
sql = "INSERT INTO tbl(ett,tva,tre) VALUES('Ett','Två','Tre');SELECT @@IDENTITY"
set rs = connection.execute(sql).NextRecordset
lastid = rs(0)
Vad felar?
LarsGMedlem sedan dec. 200012 464 inlägg Du kan inte skicka flera statement i samma executeanrop.
emissionMedlem sedan dec. 19996 721 inlägg Klarar inte MySQL(-klienten) det? Det var värst.
TravoniMedlem sedan okt. 20041 556 inlägg Och vad återstår att göra då om jag vill ha ut det senaste värdet?
sql = "INSERT INTO tbl(ett,tva,tre) VALUES('Ett','Två','Tre');"
set rs = connection.execute(sql)
sql = "SELECT @@IDENTITY;"
set rs = connection.execute(sql)
lastid = rs(0)
TravoniMedlem sedan okt. 20041 556 inlägg Ok, men hur stor är sannoligheten att någon skall exekvera imellan?
Antar att det även kommer an på hur frekvent den används.
emissionMedlem sedan dec. 19996 721 inlägg
Travoni skrev:
Ok, men hur stor är sannoligheten att någon skall exekvera imellan?
Det spelar ingen roll. Värdets scope/livslängd är uppkopplingen.