ObbelixMedlem sedan okt. 2002257 inlägg När jag vill få fram senaste inlagda posten har jag tidigare använt "SELECT @@IDENTITY" och det har fungerat perfekt.
Men nu helt plötsligt vill det sig inte och enda skillnaden (som jag kan se) från tidigare gånger jag använt det, är att jag nu har flera inserts innan jag vill ha fram ett id. Spelar det nån roll?
Har även testat med "SCOPE_IDENTITY()" men med samma resultat; "NULL".
Använder MSSQL
Det jag vill är alltså ta fram vilket id posten i tabellen "ccc" fick och uppdatera "bla" i tabellen "ddd" med det värdet.
exempel:
SQL = "INSERT INTO aaa (bla........"
adocon.execute SQL,,128
SQL = "INSERT INTO bbb (bla........"
adocon.execute SQL,,128
SQL = "INSERT INTO ccc (bla........"
adocon.execute SQL,,128
set rs = adocon.execute("SELECT @@IDENTITY")
SQL = "UPDATE ddd set bla=" & rs(0) & " WHERE id=xxx"
adocon.execute SQL,,128
rs.close : set rs = nothing
Jag ser inget konstigt i detta, men rs(0) returnerar NULL.
Nån som kan hjälpa till med detta?
Snart är det helg! :birp
@ndersMedlem sedan juni 200032 969 inlägg Frågan borde returnera ID från ccc, under förutsättning att det är en vanlig räknare, och inget knepigt replikerings-id / guid.
Testa att lägga med @@identity-selectfrågan i samma klump som din sista insert, och plocka ut det direkt.
mvh
ObbelixMedlem sedan okt. 2002257 inlägg Så här då eller?
SQL = "UPDATE ddd set bla=(SELECT @@IDENTITY) WHERE id=xxx"
ObbelixMedlem sedan okt. 2002257 inlägg Nej, tyvärr funkade det inte så heller. Får "NULL" som resultat.
/red: Kan ju tillägga att alla inserts ligger i en loop som snurrar allt från 1 till 8 gånger, men det borde väl inte spela någon roll.
@ndersMedlem sedan juni 200032 969 inlägg Jag menar så här:
SQL = "SET NOCOUNT ON " & vbcrlf & _
"INSERT INTO ccc (bla........" & vbcrlf & _
"SELECT @@IDENTITY"
set objRS = adocon.execute(SQL)
ID = objRS(0)
ObbelixMedlem sedan okt. 2002257 inlägg Se där ja!
Funkar fint :) Tack!
Två följdfrågor...
"SET NOCOUNT ON" betyder vad i denna fråga?
Och vad hade hänt om det inte stod där?
@ndersMedlem sedan juni 200032 969 inlägg Set nocount on gör att inte SQL Server räknar poster. Hade du inte haft den där hade du fått två recordsets tillbaka, ett tomt (med någon info om "1 row affected" i någon egenskap någonstans), och ett med resultatet av din SELECT. Det tomma recordsetet ligger överst, och du kommer inte direkt åt recordsetet med informationen i.
Man kan dock "byta" till det andra recordsetet med recordsetobjektets metod NextRecordset.
Mvh
ObbelixMedlem sedan okt. 2002257 inlägg OK, då vet jag.
Tack återigen!