Avatar billede crunch Nybegynder
23. marts 2003 - 12:31 Der er 13 kommentarer og
2 løsninger

sidst indsatte, find på en smart måde (oledb)

Hej.

er der nogen der har en god teknik til at få retuneret idén på den netopindsatte post. Jeg kører dette kode:

  Dim objConn As New OleDbConnection(strConn)
        Dim strSQL As String = "INSERT INTO tblDirectory (strUse, intParentid, strTitle, dtmModified) VALUES ('" + strUse + "', " + intParentid + ", '" + strTitle + "', '" + dtmModified + "');"
        Dim objCmd As New OleDbCommand(strSQL, objConn)
        objConn.Open()
        objCmd.ExecuteNonQuery()
        objConn.Close()

- altså hvordan får jeg smartest id nummeret på den nye post?
Avatar billede a1a1 Novice
23. marts 2003 - 12:35 #1
int antal = objCmd.ExecuteNonQuery();

i c#, vb måske bare
antal = objCmd.ExecuteNonQuery();

;)
Avatar billede crunch Nybegynder
23. marts 2003 - 12:40 #2
ehh. Det jeg skal have er den autoid der oprettes i min db når jeg kører ovenstående. Din kode retunerer "1". Det jeg skal bruge autonummeret som er min key i dbén.
Avatar billede burningice Nybegynder
23. marts 2003 - 13:05 #3
crunch>> du kan hente ID'et ud ved hjælp af @@Identity

http://www.kamath.com/tutorials/tut007_identity.asp
Avatar billede burningice Nybegynder
23. marts 2003 - 13:08 #4
læg dog lige mærke til det vist ikke lader sig gøre i f.eks. access db'er, men der er vist heller ikke mange undskyldninger for ikke at skifte til f.eks. MSDE eller MySQL
Avatar billede crunch Nybegynder
23. marts 2003 - 13:42 #5
ups. Jeg bruger faktisk access her i udviklingsfasen.. damm.
Avatar billede burningice Nybegynder
23. marts 2003 - 13:48 #6
hmm.. jeg har íkke selv teste det, men faldt over denne artikkel på activedeveloper.dk som er lavet over access :)

http://activedeveloper.dk/aspdigital/kapitel2/sql_identity.asp
Avatar billede guidmaster Nybegynder
23. marts 2003 - 13:51 #7
Du kunne jo gøre noget alá dette:
Dim strGETID as String = "SELECT ID FROM tblDirectory order by ID DESC"
Dim newIDCMD as new OleDbCommand(strGETID , objConn)
Dim ID as Integer = myCommand.ExecuteScalar()
Avatar billede burningice Nybegynder
23. marts 2003 - 14:05 #8
guidmaster>> og hvad nu hvis der er blevet oprettet en ny record i mellemtiden.. så får du id'et fra den forkerte. Jeg ved godt det i praksisk ofte kun er en teoritisk mulighed.. men ikke desto mindre er den der.
Avatar billede guidmaster Nybegynder
23. marts 2003 - 14:09 #9
cyberfessor>> Det er jo en af grundene til at man som oftes bruger en sproc til at kommunikere med og ikke indlejret SQL i sin kode :)
Avatar billede burningice Nybegynder
23. marts 2003 - 14:21 #10
guidmaster>> hvis man bruger SP så ville man ikke lave en kode som du kom med der ;)
men jo... SP er det eneste der dur, det er derfor MySQL sucks ;) hehe... og nu bruger han også access som ikke understøtter SP
Avatar billede crunch Nybegynder
23. marts 2003 - 14:36 #11
alrighty. Det fungede ikke med @@ men guidmasters forslag virkede. Og ja, jeg ville helst undgå det da det er lidt grimt, men lige til det her formål skal det fint kunne gå. Så tak til jer begge. Hvis i vil oprette nogle svar kan jeg lige uddele points. (-:
Avatar billede guidmaster Nybegynder
23. marts 2003 - 14:39 #12
cyberfessor>> Nej det vil man bestemt ikke ! Så vil man jo have sin SP til at returnere SELECT @@Identity. Jeg forsøgte også kun at emulere noget der kunne give han sit ID. Jeg havde ikke i første omgang tænk over om det var en mulighed at han kunne bruge .BeginTransaction, men umiddelbart vil det nok være en mulighed ?
Avatar billede burningice Nybegynder
23. marts 2003 - 14:43 #13
crunch>> forestil dig denne worst case scenarion:

der bliver oprettet en bruger og du vil gerne få fat i id'et på denne bruger. Dog sker der det at i samme splisekund er der en anden bruger der også bliver oprettet, og du kan risikerer at få returneret det samme id for begge brugerne, hvilket jo ikke var meningen :(
Avatar billede guidmaster Nybegynder
23. marts 2003 - 14:44 #14
Du kan måske kommer ud over det problem som cyberfessor påpeger ved at kigge lidt på dette:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbConnectionClassBeginTransactionTopic.asp
Avatar billede crunch Nybegynder
23. marts 2003 - 14:53 #15
tak for jeres bekymring. Jeg vil dog også læse det til næste gang. I dette tilfælde er der dog kun tale om den samme bruger som tilgår informationen. Derfor er det et teoretisk problem. Men jeg vil huske det til næste gang..
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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