Avatar billede gobo Nybegynder
17. oktober 2000 - 22:46 Der er 6 kommentarer og
1 løsning

Undgå gentagelse af elementer med loop

bag denne kryptiske overskrift gemmer sig et ret simpelt problem, hvordan undgår jeg at der skrives \"Denne e-mail adresse er ikke tilmeldt\" 699 gange, hvis min database rummer 700 poster. dvs. hvordan får jeg den til kun at skrive det én gang!

DO WHILE NOT rs.EOF
IF Request.Form(\"email\") <> rs(\"email\") THEN
Response.Write(\"Denne e-mail adresse er ikke tilmeldt\")
ELSE
bla bla bla...
Avatar billede erikjacobsen Ekspert
17. oktober 2000 - 22:56 #1
du skal vel lave en

  sql = \"select from XXXX where email=\'\" & request.form(\"email\") & \"\'\"
Avatar billede gobo Nybegynder
17. oktober 2000 - 23:02 #2
Selvfølgelig, det har jeg da også, men det jeg ønsker er at loopen ikke skriver teksten \"Denne e-mail adresse er ikke tilmeldt\" 699 gange, men at teksten kun skrives én gang! Når det står 699 gange ser det ikke så pænt ud!
Avatar billede ldanielsen Nybegynder
17. oktober 2000 - 23:10 #3
Hvis du bruger erikjacobsens sql, så får du kun en record i dit recordset, idet jeg tager for givet at alle emailadresser i tabellen er forskellige.

Så slet blot \"DO WHILE NOT rs.EOF\"

Men jeg tror du har noget andet for. Forklar hvad du skal have ud af det.


Vent lidt! ....

HOV HOV!!!

Har du lavet Do while not rs.EOF uden rs.MoveNext??

Fy, skam dig.;o)

Det har jeg kun gjort 56087 gange selv, og resultatet er altid at man får alt for meget afnoget man ikke havde brug for.
Avatar billede ldanielsen Nybegynder
17. oktober 2000 - 23:13 #4
Men det forklarer ikke hvorfor du lige netop får 699 linier, når du har 700 records. Er du sikker på det!
Avatar billede gobo Nybegynder
17. oktober 2000 - 23:17 #5
Nope rs.MoveNext er skam med, men jeg syntes ikke den var særlig relevant for det problem som jeg har.
Jeg kan desværre ikke være sikker på at det alle er forskellige e-mail adresser, der kan sagtens være gentagelser...

Her får I hele koden

filePath = Server.MapPath(\"mail.mdb\")
set Conn = server.createobject(\"ADODB.connection\")
Conn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & filePath

SQLstmt = \"SELECT * FROM mail\"
Conn.Execute (SQLstmt)

Set rs = conn.Execute(SQLstmt)

DO WHILE NOT rs.EOF
IF Request.Form(\"email\") <> rs(\"email\") THEN
Response.Write(\"Denne e-mail adresse er ikke tilmeldt\")
ELSE

SQLstmt2 = \"DELETE FROM mail where email =\'\" & request.form(\"email\") & \"\'\"

Conn.Execute (SQLstmt)

response.redirect (\"afmeldt.asp\")
End IF

rs.movenext
loop
conn.Close
Set conn = nothing
Set SQLstmt = nothing
Set SQLstmt2 = nothing
Avatar billede gobo Nybegynder
17. oktober 2000 - 23:18 #6
En lille rettelse i min indskrivning:

SQLstmt2 = \"DELETE FROM mail where email =\'\" & request.form(\"email\") & \"\'\"

Conn.Execute (SQLstmt2)

Avatar billede ldanielsen Nybegynder
17. oktober 2000 - 23:27 #7
Drop else, og spørg om den er lig med i stedet:

filePath = Server.MapPath(\"mail.mdb\")
set Conn = server.createobject(\"ADODB.connection\")
Conn.Open \"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\" & filePath
SQLstmt = \"SELECT * FROM mail\"
Conn.Execute (SQLstmt)

Set rs = conn.Execute(SQLstmt)

DO WHILE NOT rs.EOF
IF Request.Form(\"email\") = rs(\"email\") THEN

SQLstmt2 = \"DELETE FROM mail where email =\'\" & request.form(\"email\") & \"\'\"

Conn.Execute (SQLstmt)

response.redirect (\"afmeldt.asp\")
End IF
rs.movenext
loop
Response.Write(\"Denne e-mail adresse er ikke tilmeldt\")

conn.Close
Set conn = nothing
Set SQLstmt = nothing
Set SQLstmt2 = nothing
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