Avatar billede stussy Nybegynder
27. juli 2004 - 22:34 Der er 33 kommentarer og
1 løsning

skriv hvilket ID der er blevet tildelt i databasen

hvordan kan jeg, ved indskrivning til database, få tilbagemelding om hvilket ID (auto nummerering) der er blevet tildelt i denne lille streng?


strSQL = "Insert into db (navn, adresse, color) values('" & request.Form("navn") & "','" & request.Form("adresse") & "','" & request.Form("farve") & "','" & request.Form("color")  & "')"
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing%>
tak for tilmelding
<p>du har indtastet følgende :</p>
<p>navn : <%response.write request("navn")%><br>
adresse : <%response.write request("adresse")%><br>
color : <%response.write request("color")%></p>
<p>Og du har fået dette ID : <%response.write request("ID")%></p>
Avatar billede stussy Nybegynder
27. juli 2004 - 22:36 #1
sorry denne streng (fejl havde sneget sig ind)

strSQL = "Insert into db (navn, adresse, color) values('" & request.Form("navn") & "','" & request.Form("adresse") & "','" & request.Form("color")  & "')"
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing%>
tak for tilmelding
<p>du har indtastet følgende :</p>
<p>navn : <%response.write request("navn")%><br>
adresse : <%response.write request("adresse")%><br>
color : <%response.write request("color")%></p>
<p>Og du har fået dette ID : <%response.write request("ID")%></p>
Avatar billede eagleeye Praktikant
27. juli 2004 - 22:36 #2
Hvilken database er det?
Avatar billede stussy Nybegynder
27. juli 2004 - 22:38 #3
database.mdb
Avatar billede fun22 Nybegynder
27. juli 2004 - 22:40 #4
strSQL = "Insert into db (navn, adresse, color) values('" & request.Form("navn") & "','" & request.Form("adresse") & "','" & request.Form("color")  & "')"
Conn.Execute(strSQL)
rs.open
Set Conn = Nothing%>
tak for tilmelding
<p>du har indtastet følgende :</p>
<p>navn : <%response.write request("navn")%><br>
adresse : <%response.write request("adresse")%><br>
color : <%response.write request("color")%></p>
<p>Og du har fået dette ID : <%response.write rs("ID")%></p>

Her går jeg så ud fra at dit felt i databasen hedder id
er ikke testet!!
Avatar billede eagleeye Praktikant
27. juli 2004 - 22:43 #5
Altså en Access database :)

her en beskrivelse af det:
http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=79

Du kan prøve efter du har indsat indsætte dette:

Set RS = Conn.Execute( "SELECT @@IDENTITY" )
idOfNewlyAddedRecord = RS(0)


Så det bliver:


strSQL = "Insert into db (navn, adresse, color) values('" & request.Form("navn") & "','" & request.Form("adresse") & "','" & request.Form("farve") & "','" & request.Form("color")  & "')"
Conn.Execute(strSQL)
Set RS = Conn.Execute( "SELECT @@IDENTITY" )
idOfNewlyAddedRecord = RS(0)
Conn.Close
Set Conn = Nothing%>


Giver det 0 eller -1 må kan du prøve at ændre den sidste set rs til:
Set RS = Conn.Execute( "SELECT @@IDENTITY FROM db" )


Giver det stadig 0 må man bruge .AddNew metoden.
Avatar billede stussy Nybegynder
27. juli 2004 - 22:52 #6
kunne man ikke lave en ny select ?

hvor man finder det højeste ID og vælger derfra ?

Men hvordan skulle det gøres?

-> fun22 = virker ikke :-(
eagleeye -> langt over min fatteevne, men hvis intet andet virker, må jeg jo til at se om jeg kan finde hoved og hale i det, men er der ikke en lettere måde?
Avatar billede eagleeye Praktikant
27. juli 2004 - 22:54 #7
Jo men en som henter max id gør jo det sammme som:
Set RS = Conn.Execute( "SELECT @@IDENTITY" )

Men du kan da prøve at skrive det sådan her:

Set RS = Conn.Execute( "SELECT max(id) from db" )
Avatar billede eagleeye Praktikant
27. juli 2004 - 22:56 #8
Så har du to selects, umiddelbart er det ikke mere uoverskueligt efter min mening :)


strSQL = "Insert into db (navn, adresse, color) values('" & request.Form("navn") & "','" & request.Form("adresse") & "','" & request.Form("farve") & "','" & request.Form("color")  & "')"
Conn.Execute(strSQL)
Set RS = Conn.Execute( "SELECT max(id) from db" )
idOfNewlyAddedRecord = RS(0)
Conn.Close
Set Conn = Nothing%>
Avatar billede stussy Nybegynder
27. juli 2004 - 22:57 #9
lidt mere logisk for mig :-)
tak for hjælpen, send lige et svar, så ruller pointene....
Avatar billede eagleeye Praktikant
27. juli 2004 - 22:58 #10
ok :)
Avatar billede stussy Nybegynder
27. juli 2004 - 23:07 #11
dammm det virker ikke, det jeg skal have er noget i stil med :

strSQL = "Select * from counter where ID= max(ID)"
Avatar billede stussy Nybegynder
27. juli 2004 - 23:08 #12
sorry igen en tryk fejl :-( (det er sent)

strSQL = "Select * from db where ID= max(ID)"
Avatar billede eagleeye Praktikant
27. juli 2004 - 23:08 #13
Hvad er fejlen ?
Avatar billede stussy Nybegynder
27. juli 2004 - 23:10 #14
jeg kan ikke hente fx rs("navn") frem
Avatar billede stussy Nybegynder
27. juli 2004 - 23:10 #15
tak for tilmelding
<p>du har indtastet følgende :</p>
<p>navn : <%response.write rs("navn")%><br>
adresse : <%response.write rs("adresse")%><br>
color : <%response.write rs("color")%></p>
<p>Og du har fået dette ID : <%response.write rs("ID")%></p>
Avatar billede arne_v Ekspert
27. juli 2004 - 23:11 #16
Brug af MAX(id) kan ikke erstatte @@IDENTITY med flere samtidige brugere.
Avatar billede eagleeye Praktikant
27. juli 2004 - 23:13 #17
Nej ok, det kan du ikke navn og adresse må du uskrive fra Request.Form("navn") osv.

Max i SQL kan hente max værdi ud og ikke bruge som en where del.


Så du nød til at gøre sådan her:

strSQL = "Insert into db (navn, adresse, color) values('" & request.Form("navn") & "','" & request.Form("adresse") & "','" & request.Form("farve") & "','" & request.Form("color")  & "')"
Conn.Execute(strSQL)
Set RS = Conn.Execute( "SELECT max(id) as nytid from db" )
Conn.Close
Set Conn = Nothing%>
tak for tilmelding
<p>du har indtastet følgende :</p>
<p>navn : <%response.write request("navn")%><br>
adresse : <%response.write request("adresse")%><br>
color : <%response.write request("color")%></p>
<p>Og du har fået dette ID : <%response.write rs("nytid")%></p>
Avatar billede stussy Nybegynder
27. juli 2004 - 23:15 #18
jeg har ændret til @@IDENTITY men får nu denne fejl :
Item cannot be found in the collection corresponding to the requested name or ordinal.

i linien som kalde rs("navn")
Avatar billede stussy Nybegynder
27. juli 2004 - 23:15 #19
ok tester lige
Avatar billede stussy Nybegynder
27. juli 2004 - 23:17 #20
nu får jeg denne :
Og du har fået dette ID :

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.
Avatar billede eagleeye Praktikant
27. juli 2004 - 23:18 #21
Ok hvordan ser koden ud?
Det er fordi id ikke er en kolonne i recordset'et
Avatar billede stussy Nybegynder
27. juli 2004 - 23:22 #22
sådan ser hele sovsen ud :

strSQL = "Insert into db(navn, adresse, color) values('" & request.Form("navn") & "','" & request.Form("adresse") & "','" & request.Form("color")  & "')"
Conn.Execute(strSQL)

Set RS = Conn.Execute( "SELECT max(Id) as nytid from db" )

Conn.Close
Set Conn = Nothing
%>

tak for tilmelding
<p>du har indtastet følgende :</p><p>
navn : <%response.write request("navn")%><br>
adresse : <%response.write request("adresse")%><br>
color : <%response.write request("color")%></p><p>
Og du har fået dette ID : <%response.write rs("nytid") %></p>
Avatar billede stussy Nybegynder
27. juli 2004 - 23:23 #23
jeg har prøvet at fjerne rs(" så der står :

Og du har fået dette ID : <%response.write nytid %></p>

i sidste linie - virker ej heller :-(
Avatar billede eagleeye Praktikant
27. juli 2004 - 23:26 #24
samme fejl?
Avatar billede stussy Nybegynder
27. juli 2004 - 23:29 #25
nope, der står bare ID =

og så står der ingen ID
Avatar billede eagleeye Praktikant
27. juli 2004 - 23:30 #26
Linjen skal være sådan her:

Og du har fået dette ID : <%response.write rs("nytid") %></p>
Avatar billede stussy Nybegynder
27. juli 2004 - 23:32 #27
Item cannot be found in the collection corresponding to the requested name or ordinal.
Avatar billede stussy Nybegynder
27. juli 2004 - 23:33 #28
der er jo ingen recordset som hedder nytid ?
ingen kolonner som hedder nytid ?

Hvorfor så rs("nytid")?
Avatar billede eagleeye Praktikant
27. juli 2004 - 23:35 #29
Prøv lige at flytte de to linjer:

Conn.Close
Set Conn = Nothing


Til sidst efter du har udskrivet.


>>der er jo ingen recordset som hedder nytid ?
Nej men den laves i dette max(Id) as nytid  as bruge til at lave et alias sådan man kan bruge max(id) som et fiktivt kolonnenavn i denne linje
Set RS = Conn.Execute( "SELECT max(Id) as nytid from db" )
Avatar billede stussy Nybegynder
27. juli 2004 - 23:40 #30
|-)  blind eller hvad  .....  tjaaa logisk nok.

perfekt så virker det.

velfortjente point
Avatar billede eagleeye Praktikant
27. juli 2004 - 23:41 #31
Så kan du prøve om denne virker:
Set RS = Conn.Execute( "SELECT  @@IDENTITY as nytid from db" )
Avatar billede stussy Nybegynder
27. juli 2004 - 23:58 #32
nej da det virker fint nu... :-)
Avatar billede phineas_phreak Nybegynder
28. juli 2004 - 01:49 #33
kan man ikke bruge select top 1 ?
Avatar billede phineas_phreak Nybegynder
28. juli 2004 - 01:50 #34
og så bruge ORDER BY ID desc;
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