Avatar billede chrisrj Forsker
10. oktober 2002 - 12:02 Der er 13 kommentarer og
3 løsninger

hvordan finder man id'et på den post man lige har oprettet?

Som spg. lyder, vil jeg finde id'et på den post jeg lige har oprettet. Det er i sig selv ikke et problem.

Men hvis man nu forstiller sig at der er blevet oprettet en post i mellem tiden.

Hvordan laver man det?
Avatar billede medions Nybegynder
10. oktober 2002 - 12:03 #1
Skriver:

strSQL = "SELECT TOP 1 FROM tabel ORDER BY DESC"
Set objRs = objConn.Execute(strSQL)

Response.Write(objRs("id"))

//>Rune
Avatar billede medions Nybegynder
10. oktober 2002 - 12:03 #2
Ellers er det:
strSQL = "SELECT TOP 1 FROM tabel ORDER BY ASC"
Set objRs = objConn.Execute(strSQL)

Response.Write(objRs("id"))

-kom pludselig i tvivl..!

//>Rune
Avatar billede chrisrj Forsker
10. oktober 2002 - 12:04 #3
ja, men hvad nu hvis der er blevet oprettet en anden post i mellem tiden??
Avatar billede criterius.dk Nybegynder
10. oktober 2002 - 12:07 #4
Avatar billede chrisrj Forsker
10. oktober 2002 - 12:09 #5
criterius.dk -> jeg bruger access, så det kan jeg ikke bruge... desværre. :(
Avatar billede criterius.dk Nybegynder
10. oktober 2002 - 12:13 #6
ævævæv... kom også til at tænke på, at det vist ikke helt var det du skulle bruge... Det opretter id'et _før_ det indtastes.
Avatar billede chrisrj Forsker
10. oktober 2002 - 12:14 #7
ja, det er jo ikke liige det... :)
Avatar billede keysersoze Ekspert
10. oktober 2002 - 12:14 #8
det er IKKE en god idé at bruge select top 1 - hvad nu hvis der indsættes flere poster på en gang? så risikeres det at id byttes rundt...

kig i stedet her; http://activedeveloper.dk/aspdigital/kapitel2/sql_identity.asp
Avatar billede eagleeye Praktikant
10. oktober 2002 - 12:17 #9
Hvis du bruger Access så tag et kig på disse eks for at finde ID på en god måde:

http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=79
Avatar billede chrisrj Forsker
10. oktober 2002 - 12:33 #10
eagleeye -> ok, det er lidt langhåret. :) kan du pille det ud, som jeg skal bruge?
Avatar billede chrisrj Forsker
10. oktober 2002 - 12:36 #11
glemt det... jeg har fundet en anden måde at komme uden om det.... ellers tak for hjælpen!!
Avatar billede keysersoze Ekspert
10. oktober 2002 - 12:41 #12
langhåret? alt du skal gøre er at indsætte dine data og derefter bruge dette;

Set rsIdentity = myConn.Execute("SELECT @@IDENTITY as NewID FROM TESTBASE")
Response.Write rsIdentity("NewID")

så har du dit ID
Avatar billede keysersoze Ekspert
10. oktober 2002 - 12:44 #13
selvfølgelig skal det tilpasses så navnene passer - men ellers er det alt...

hvad har du ellers fundet på af løsning?
Avatar billede eagleeye Praktikant
10. oktober 2002 - 12:50 #14
Hvis dette styk kode giver 0 tilbage:
Set rsIdentity = myConn.Execute("SELECT @@IDENTITY as NewID FROM TESTBASE")
Response.Write rsIdentity("NewID")


Så prøv med dette:
RS.Open tableName, yourAlreadyOpenConnection, adOpenKeySet, adLockOptimistic, adCmdTable
RS.AddNew
RS("field1") = value1
RS("field2") = value2
...
RS("fieldN") = valueN
RS.Update
idOfAddedRecord = RS("nameOfAutonumberField")

Du skal naturligvis lige tilrette navne.
Avatar billede chrisrj Forsker
10. oktober 2002 - 13:13 #15
Min løsning er bare at hente id'et når jeg skal bruge det.
Før var det sådan at jeg have en koloenne (link) med filnavnet OG det id posten havde f.eks.:

id  ....  link
1    ....  profil.asp?id=1

nu står der bare ikke noget ikke efter "...?id="
Avatar billede dna Nybegynder
14. oktober 2002 - 00:29 #16
Alle jer.. har et nogenlunde lign. problem... har sat denne tankegang op ??

Teoretisk... Hvordan håndterer den mon at 2 brugere opretter på samme tid...

Det er mere det jeg fisker efter.. Vi forestiller os at scriptet bliver kørt af 2 brugere på samme tid: Hvis det nu sker sådan her?

Bruger1 opretter en record med id 14
Bruger2 opretter en record med id 15
Bruger1 kører "SELECT @@IDENTITY" og får ID 15
Bruger2 kører "SELECT @@IDENTITY" og får også ID 15

Kan det ikke ske ??

dna
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