webForumDet fria alternativet

Syntax med @@identity?

6 svar · 173 visningar · startad av CokeLight

CokeLightMedlem sedan juni 2000506 inlägg
#1

Hejsan allihopa,

Jag vill använda @@identity i en update sats.. kör Access2000. Har kollat arkiven o hittat flera exempel, men inte med syntax tyvärr, o jag får det inte funka med det som jag provat.. hur gör man...? :)

[kod]
mittID = cn.execute("SELECT @@IDENTITY")

sqlUpdate = "UPDATE minTabell SET sDocument = " & parseArr & " WHERE mittID = " & mittID
[kod]

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

LarsGMedlem sedan dec. 200012 465 inlägg
#2

set mittID = cn.execute("SELECT @@IDENTITY")

sqlUpdate = "UPDATE minTabell SET sDocument = " & parseArr & " WHERE mittID = " & mittID(0)

Execute returnerar ett recordset.

------------------
essentitia preter non sans multiplicandum

CokeLightMedlem sedan juni 2000506 inlägg
#3

ach so.. ! :) va bra.. då vet jag vilken syntax som är rätt.. hmm.. fast jag provade den varianten också tidigare, och jag får 0 (noll).. ?? Så jag trodde att det kanske också var fel..

Jag vet inte om jag gjort fel innan.. jag har en INSERT, som exekveras (i en frame) och så kör jag den här UPDATE:n i annan frame (om det nu spelar någon roll). Båda framearna ligger under samma parent frame, och båda triggas med två olika submitts från en och samma submit knapp.. min fundering var om det blir noll i select @@identity eftersom de körs samtidigt...?

Men select @@identity borde väl ändå inte returnera noll i vilket fall som helst.. ? Den borde väl returnera det värde som lades in sist.. så hur kommer det sig att det blir noll...? :) Tack för ditt snabba svar LarsG.

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Jo, den fungerar ju så att den returnerar det senaste värdet som genererades för en insert inom samma session mot databasen.

Så om du har två olika submit så blir det två olika uppkopplingar till databasen.

Du måste alltså ta reda på värdet @@identity innan du stänger den connection där du gjorde insert.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 15 aug 2001]

CokeLightMedlem sedan juni 2000506 inlägg
#5

Jaha!! hehehe.. vilken tur att du finns.. för det där hade jag aldrig kommit på.. Men då så ska jag spara skräpet i en cookie då, och använda det i mitt where villkor..

* CokeLight vill gå hem och orkar inte tänka ut nåt annat :) * Eller finns det nån bra lösning...? Annars får jag tacka så mycket för hjälpen jag fått !!

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

LarsGMedlem sedan dec. 200012 465 inlägg
#6

Ja en cookie eller en sessionvariabel blir väl bra.

------------------
essentitia preter non sans multiplicandum

CokeLightMedlem sedan juni 2000506 inlägg
#7

Yup, bra.. skönt att det här är löst.. :)(verkar vara bättre med session i det här fallet.. jag måste köra request.cokie("LastID")+1, för den verkar ligga ett steg bakom.. så då kan man ju lika gärna köra session o få det rätt på en gång.. )

Jag ville undvika session variabler eftersom jag läste att det tog prestanda, men jämfört med cookies kanske det inte är nån stor skillnad för att skapa cookies tar väl också prestanda, så det kanske går på ett ut..? (fast det har ju inget med SQL att göra) Okay, tack igen :)

------------------
"Between stimulus and response is a pause wherein our ability to choose lies".

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb