Avatar billede joch Nybegynder
29. august 2002 - 21:16 Der er 8 kommentarer og
1 løsning

Find sidste ID i Databasen

Jeg har brug for at sende en e-mail ud med det sidste ID, som brugeren har oprettet (Brugernavn=Email)

Men den sender den anden sidste... Hvad er der galt???

Set Rs = Server.CreateObject("ADODB.Connection")
Rs.Open db
Sql = "Select * from Brugere order by ID DESC"
Set Record =  Rs.Execute(Sql)

BASE_ID = 0

Do While Not Record.EOF

BASE_Email = record("Email")
If BASE_Email = Email and BASE_ID = 0 then BASE_ID = record("ID")


Record.MoveNext
    Loop
    Record.Close
    RS.Close
Avatar billede eagleeye Praktikant
29. august 2002 - 21:23 #1
Med den SQL du har hendter du alle recordet ud og så looper du gennem dit recordset og så finde du en forkert email adress.. Enten skal du bruger MAX (ID) eller kan du bruger TOP 1 hvis der er Access..:


Set Rs = Server.CreateObject("ADODB.Connection")
Rs.Open db
Sql = "Select TOP 1 * from Brugere order by ID DESC"
Set Record =  Rs.Execute(Sql)

BASE_ID = 0
if not rs.eof then
  BASE_Email = record("Email")
  BASE_ID = record("ID")
end if

Record.Close
RS.Close
Avatar billede joch Nybegynder
29. august 2002 - 21:37 #2
OK, men kan en anden bruger teoretisk oprette i basen, imellem at jeg har skrevet til basen og jeg finder den sidste ID -hvis du forstår.

Det var derfor jeg havde sat min if-sætning ind. (For at være sikker på at mit password ikke blev sendt til en forkert!)

If BASE_Email = Email and BASE_ID = 0 then BASE_ID = record("ID")
Avatar billede eagleeye Praktikant
29. august 2002 - 21:44 #3
Ja det er rigtigt.

Hvis du kender Email på forhånd kan du jo lave en SQL som kun hendter den ene post hvor Email findes...

Sql = "Select * from Brugere where email = '" & Email & "'"
Set Record =  Rs.Execute(Sql)
Avatar billede joch Nybegynder
29. august 2002 - 21:50 #4
Det prøver jeg...

Linien: "if not rs.eof then"
... driller mig - og fjerner jeg den får jeg igen den anden sidste!
Avatar billede eagleeye Praktikant
29. august 2002 - 21:52 #5
hov de skal også være record.eof og ikke rs.eof
Avatar billede joch Nybegynder
29. august 2002 - 22:01 #6
Jeg kan ikke bruge:

Sql = "Select * from Brugere where email = '" & Email & "'"

... da samme bruger, got kan have flere poster

--------------------------------------------------
Vi er nået frem til understående, men jeg får stadig den anden sidste...

Set Rs = Server.CreateObject("ADODB.Connection")
Rs.Open db
Sql = "Select TOP 1 * from Brugere order by ID DESC"
Set Record =  Rs.Execute(Sql)

BASE_ID = 0

if Not Record.EOF then
  BASE_Email = record("Email")
  BASE_ID = record("ID")
end if

Record.Close
RS.Close
Avatar billede eagleeye Praktikant
29. august 2002 - 22:09 #7
Ok hvis du vil sikre det så skal du lave det med det loop du har vist og når du har fundet den rigtige så lave en exit do


Set Rs = Server.CreateObject("ADODB.Connection")
Rs.Open db
Sql = "Select * from Brugere order by ID DESC"
Set Record =  Rs.Execute(Sql)

BASE_ID = 0

Do While Not Record.EOF
  BASE_Email = record("Email")
  If BASE_Email = Email and BASE_ID = 0 then
    BASE_ID = record("ID")
    exit do
  end if
  Record.MoveNext
Loop
Record.Close
RS.Close
Avatar billede joch Nybegynder
29. august 2002 - 22:25 #8
Det virker vist :o) Jeg tester det lige igennem

...men på forhånd tak
Avatar billede joch Nybegynder
30. august 2002 - 00:13 #9
Det virker fint - Takker for hjælpen
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