Avatar billede armit Nybegynder
07. januar 2004 - 19:32 Der er 8 kommentarer og
1 løsning

Finde ID på den sidst oprettede.

Jeg har brug for måde til at finde den nyligt opretted post id (Et felt med Autonummerering), det skal være en funktion der er sikker, dvs. ikke noget med at udføre en select efterfølgende for at finde den sidste, da der er mange brugere der bruger denne funktion samtidig.

Jeg skal vide om der er en standard måde at gøre dette på?
Avatar billede armit Nybegynder
07. januar 2004 - 19:34 #1
Det skal bruges til en ASP/VB side.
Avatar billede juks Novice
07. januar 2004 - 19:37 #2
dlast()
Avatar billede mugs Novice
07. januar 2004 - 19:37 #3
Jeg har ikke forstand på ASP, men i Access kan du finde den største værdi i en tabel ved at bruge funktionen DMax.
Avatar billede avlund Nybegynder
07. januar 2004 - 19:37 #4
Ikke rigtigt. I hvert fald ikke i Access, så vidt jeg ved. Hvis du har så mange brugere på, ville det være sund fornuft at bruge en anden database alligevel, Access har aldrig nogensinde rigtigt været beregnet til brug af flere på én gang.
Avatar billede eagleeye Praktikant
07. januar 2004 - 19:39 #5
ASP kan det gøres sådan her:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.JET.OLEDB.4.0;Date Source=" & Server.MapPath("somedir/somedb.mdb")

'Først indsæt data
SQL = "INSERT INTO tabelNavn (kol1, kol2) VALUES('abc', 'xyz')"
Conn.Execute (SQL)

'Find sidste tilføjet ID
SQL = "SELECT @@IDENTITY FROM tabelNavn"
Set RS = Conn.Execute(SQL)
nytID = RS(0)
RS.Close
response.write nytID
%>

Hvis dette eksemple giver udskriver 0 eller -1 så prøv med dette næste eksemple:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.JET.OLEDB.4.0;Date Source=" & Server.MapPath("somedir/somedb.mdb")
Set rs = Server.CreateObject("ADODB.RecordSet")

rs.Open "SELECT * FROM tabelNavn", Conn, 1, 3
rs.AddNew
rs("kol1") = "abc"
rs("kol2") = "xyz"
rs.Update
nytID = rs("navnet_på_autonummer_kolonnen")

Response.write nytID
%>
Avatar billede armit Nybegynder
07. januar 2004 - 20:12 #6
Desværre, eagleeye kan du ikke oprette et svar så du kan få point.
Avatar billede fynbohans Nybegynder
07. januar 2004 - 23:35 #7
Der blev spurgt om standardmåden at løse det stillede problem på.
Det mugs skriver er standardmåden at gøre det på i Access.

Under den forudsætning, at tabellen er ornet efter autonummereringen kan du
også bruge VBA og gå til sidste post og finde det sidste brugte nr. med:

Dim SidsteNr as Long
DoCmd.GoToRecord , , acLast
SidsteNr = [ID]

At Access aldrig har været beregnet til brug af flere på en gang må stå for avlunds egen regning. Så vidt jeg ved mener i hvert fald Microsoft noget andet!
Avatar billede eagleeye Praktikant
07. januar 2004 - 23:36 #8
Jo her et svar ;)
Avatar billede armit Nybegynder
08. januar 2004 - 08:21 #9
Hej Hans

Jeg valgte løsning 2 fra eagleeye da den har fat i den sidste oprettede post fra netop denne bruger, mugs løsning så vidt jeg kan se finder bare den største forekomst af ID, og dette betyder at det kan give problemer hvis 2 på samme tid bruger funktionen, men ellers er det jo også en måde at gøre det på ;-).
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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