Avatar billede riishoj Nybegynder
20. september 2005 - 13:22 Der er 53 kommentarer og
1 løsning

Hvorfor? Either BOF or EOF is True

Hvorfor får jeg fejlen

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

i mit script? Der er ingen af recordsettene, som er tomme.

StrSQL = "Select * from mailliste"
    set rs = Conn.execute(strSQL)
   
    Dato1 = date()
    minus = "7"
   
    SQL = "SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='" & session("brugernavn") & "' AND startdato>DATE()-"&minus
    Set rs2 = Conn.Execute(SQL)
 

    Do While Not (rs.Eof)

    strEmail  = rs("email")   
    rs2.moveFirst()

    Do While Not (rs2.Eof)
    strBesked = rs2("tekst")

    Set JMail = Server.CreateObject("JMail.SMTPMail")
    JMail.ContentType = ""
    JMail.ServerAddress = "xxx.dk"
    JMail.Sender = "xxx@x.dk"
    JMail.AddRecipientEx "" & strEmail & "", "" & strEmail & ""
    JMail.Subject = "Ugebrev"
    JMail.Body = "" & strbesked & ""
    JMail.Execute
    Set JMail = Nothing

    response.write "" & strEmail & " - Afsendt korrekt<br>"

    rs2.MoveNext
    Loop

    rs.MoveNext
    Loop
    response.write "<br><br><b>Alle beskeder blev afsendt korrekt.</b>"

    Conn.Close

    %>
Avatar billede cpufan Juniormester
20. september 2005 - 13:24 #1
strEmail  = rs("email")   
    rs2.moveFirst() ' det er denne der er tom
Avatar billede cpufan Juniormester
20. september 2005 - 13:25 #2
så denne vil klare det:

strEmail  = rs("email")   
if not rs2.eof then rs2.moveFirst()
Avatar billede riishoj Nybegynder
20. september 2005 - 13:38 #3
Det forstår jeg ikke. rs("email") indeholder 3 emailadresser og rs2("tekst") indeholder 3 meddelelser. Ergo er der vel ingen tomme recordsets.
Hvis jeg prøver dit forslag, løbes scriptet godt nok igennem uden fejl, men der bliver ikke sendt nogen mail.
Avatar billede busschou Praktikant
20. september 2005 - 14:26 #4
jeg kan ikke huske reglerne for det hersens BOF og EOF, men BOF står jo for Beginning Of File eller lignende.
Så det kan måske tænkes at du ikke kan bede den om at flytte sig til start når den allerede står på start positionen.
Prøv rykke linjen med rs2.movefirst ned hvor du også har rs.movenext for til den tid ved du at du ikke står i starten mere
Avatar billede ldanielsen Nybegynder
20. september 2005 - 14:34 #5
busschous forslag vil resultere i en uendelig while
Avatar billede ldanielsen Nybegynder
20. september 2005 - 14:35 #6
Sorry, jeg tog fejl, han har vist ret :)
Avatar billede riishoj Nybegynder
20. september 2005 - 14:35 #7
Næ, det hjælper ikke noget -(
Avatar billede busschou Praktikant
20. september 2005 - 14:36 #8
riishoj >> hvis du rykker den derned giver den så stadig samme fejl ved rs2.movefirst, eller fåes fejlen i en anden linje?
Avatar billede riishoj Nybegynder
20. september 2005 - 14:40 #9
De sker det samme som ved cpufans forslag. Scriptet køres igennem uden fejlmeddelelse, der udskrives "Alle beskeder blev afsendt korrekt", men der sendes ingen mail!
Avatar billede busschou Praktikant
20. september 2005 - 14:48 #10
prøv lige sådan her
------
StrSQL = "Select * from mailliste"
    set rs = Conn.execute(strSQL)
 
    Dato1 = date()
    minus = "7"
 
    SQL = "SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='" & session("brugernavn") & "' AND startdato>DATE()-"&minus
    Set rs2 = Conn.Execute(SQL)

if rs.eof or rs.bof then
  response.write "rs er tom"
end if
    Do While Not (rs.Eof)

    strEmail  = rs("email") 
   
if rs2.eof or rs2.bof then
  response.write "rs2 er tom"
end if

    Do While Not (rs2.Eof)
    strBesked = rs2("tekst")

    Set JMail = Server.CreateObject("JMail.SMTPMail")
    JMail.ContentType = ""
    JMail.ServerAddress = "xxx.dk"
    JMail.Sender = "xxx@x.dk"
    JMail.AddRecipientEx "" & strEmail & "", "" & strEmail & ""
    JMail.Subject = "Ugebrev"
    JMail.Body = "" & strbesked & ""
    JMail.Execute
    Set JMail = Nothing

    response.write "" & strEmail & " - Afsendt korrekt<br>"

    rs2.MoveNext
    Loop
    rs2.moveFirst
    rs.MoveNext
    Loop
    response.write "<br><br><b>Alle beskeder blev afsendt korrekt.</b>"

    Conn.Close

    %>
Avatar billede riishoj Nybegynder
20. september 2005 - 14:53 #11
rs2 er tom
ADODB.Recordset error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

Det fatter jeg godt nok ikke!
Avatar billede busschou Praktikant
20. september 2005 - 14:56 #12
ja det betyder jo så at din sql sætning
"SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='" & session("brugernavn") & "' AND startdato>DATE()-"&minus
ikke giver dig noget resultat
Avatar billede riishoj Nybegynder
20. september 2005 - 14:56 #13
Her er indholdet af tabellen "ugebrev" - rs2("tekst")

Id    tekst    startdato    meddeler
5    goddag    17-09-05    kontor
7    ugebrev    17-09-05    kontor
8    ugebre 37    17-09-05    kontor
9    ugebrev 30    01-09-05    kontor
Avatar billede busschou Praktikant
20. september 2005 - 14:59 #14
er du sikker på at du har sat sessionen "brugernavn" til at være "kontor" ?
Avatar billede riishoj Nybegynder
20. september 2005 - 15:02 #15
Argh, det er selvfølgelig her fejlen ligger. Jeg har pillet scriptet ud fra en side, hvor der bliver sat en session. Øjeblik
Avatar billede cpufan Juniormester
20. september 2005 - 15:02 #16
prøv at ændre den til

"SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='kontor' AND startdato>DATE()-"&minus
for at teste
Avatar billede busschou Praktikant
20. september 2005 - 15:10 #17
hehe mon ikke det løser en del så ;o)
Det er altid underholdene at snuppe koden fra et sted, og så glemme alle mulige små dumme ting man ikke havde overvejet, og så ser man sig jo blind på det :o)
Avatar billede riishoj Nybegynder
20. september 2005 - 15:10 #18
Ja, det var selvfølgelig det. Mange tak. Meeeeeeeeen kan det ikke lade sig gøre at få sendt de 3 poster som én mail og ikke som nu 3?
Avatar billede riishoj Nybegynder
20. september 2005 - 15:12 #19
P.S det kunne godt give lidt ekstra point!
Avatar billede busschou Praktikant
20. september 2005 - 15:12 #20
jo så skal du bare flytte løkken
Avatar billede busschou Praktikant
20. september 2005 - 15:13 #21
ala
--
Set JMail = Server.CreateObject("JMail.SMTPMail")
    JMail.ContentType = ""
    JMail.ServerAddress = "xxx.dk"
    JMail.Sender = "xxx@x.dk"
    JMail.AddRecipientEx "" & strEmail & "", "" & strEmail & ""
    JMail.Subject = "Ugebrev"

    Do While Not (rs2.Eof)
    strBesked = strBesked & rs2("tekst")

    rs2.movenext
    loop

    JMail.Body = "" & strbesked & ""
    JMail.Execute
    Set JMail = Nothing
Avatar billede busschou Praktikant
20. september 2005 - 15:20 #22
du skal/kan selvfølgelig så rette strBesked til så det ikke bare kommer i een stor smørre
Du kan endvidere også benytte JMail.HTMLBody i stedet for JMail.Body , hvorved du kan indsætte html kode i mailen hvis det er
Avatar billede riishoj Nybegynder
20. september 2005 - 15:20 #23
Jeg får et Expected "loop", så jeg har sikkert lavvet en fejl. Gider du prøve sætte det ind i scriptet og slette det som skal slettes, - Please
Avatar billede busschou Praktikant
20. september 2005 - 15:25 #24
hmm sådan her vil jeg mene, men uden hensyntagen til den dersens session der !
----
StrSQL = "Select * from mailliste"
set rs = Conn.execute(strSQL)

Dato1 = date()
minus = "7"

SQL = "SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='" & session("brugernavn") & "' AND startdato>DATE()-"&minus
Set rs2 = Conn.Execute(SQL)

Do While Not (rs.Eof)
  strEmail  = rs("email")
 
  Set JMail = Server.CreateObject("JMail.SMTPMail")
  JMail.ContentType = ""
  JMail.ServerAddress = "xxx.dk"
  JMail.Sender = "xxx@x.dk"
  JMail.AddRecipientEx "" & strEmail & "", "" & strEmail & ""
  JMail.Subject = "Ugebrev"

  Do While Not (rs2.Eof)
    strBesked = strBesked & " : " & rs2("tekst")
    rs2.MoveNext
  Loop

  JMail.Body = "" & strbesked & ""
  JMail.Execute
  Set JMail = Nothing

  response.write "" & strEmail & " - Afsendt korrekt<br>"

  rs2.moveFirst
  rs.MoveNext
Loop

response.write "<br><br><b>Alle beskeder blev afsendt korrekt.</b>"

Conn.Close
%>
Avatar billede busschou Praktikant
20. september 2005 - 15:27 #25
Men hvis vi alligevel er ude i at rs2 skal gennemløbes og samles for at sendes ud til hver i rs ja så kan den ligeså godt komme uden om den første løkke
For den behøves jo ikke køre for hver email adresse
-----
StrSQL = "Select * from mailliste"
set rs = Conn.execute(strSQL)

Dato1 = date()
minus = "7"

SQL = "SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='" & session("brugernavn") & "' AND startdato>DATE()-"&minus
Set rs2 = Conn.Execute(SQL)

Do While Not (rs2.Eof)
  strBesked = strBesked & " : " & rs2("tekst")
  rs2.MoveNext
Loop

Do While Not (rs.Eof)
  strEmail  = rs("email")
 
  Set JMail = Server.CreateObject("JMail.SMTPMail")
  JMail.ContentType = ""
  JMail.ServerAddress = "xxx.dk"
  JMail.Sender = "xxx@x.dk"
  JMail.AddRecipientEx "" & strEmail & "", "" & strEmail & ""
  JMail.Subject = "Ugebrev"
  JMail.Body = "" & strbesked & ""
  JMail.Execute
  Set JMail = Nothing

  response.write "" & strEmail & " - Afsendt korrekt<br>"

  rs.MoveNext
Loop

response.write "<br><br><b>Alle beskeder blev afsendt korrekt.</b>"

Conn.Close
%>
Avatar billede busschou Praktikant
20. september 2005 - 15:28 #26
du kan så oven i købet overveje kun at sende een email hvor alle modtagere står som bcc så de ikke kan se hinanden , men det erjo så en smags sag
Avatar billede riishoj Nybegynder
20. september 2005 - 15:32 #27
Det går jo forrygende det her. Hvis du kan formatere teksten og indsætte html-kode, så smider jeg 170 (ethundredeoghalvfjerds) point oven i.
Avatar billede riishoj Nybegynder
20. september 2005 - 15:33 #28
Det sidste tager vi også lige med.
Avatar billede busschou Praktikant
20. september 2005 - 15:35 #29
Det med at lave html formatering kræver bare at du ændrer JMail.Body til JMail.HTMLBody
Så vidt jeg husker kan du så gøre sådan her
--
JMail.Body = "Denne tekst vises fordi du ikke kan modtage html emails"
JMail.HTMLBody = "Det er fedt at lave <b>FEDE</b> html mails"
--
Altså du indsætter bare html koden som du ønsker
Avatar billede busschou Praktikant
20. september 2005 - 15:38 #30
med bcc så sådan her
----
StrSQL = "Select * from mailliste"
set rs = Conn.execute(strSQL)

Dato1 = date()
minus = "7"

SQL = "SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='" & session("brugernavn") & "' AND startdato>DATE()-"&minus
Set rs2 = Conn.Execute(SQL)

Do While Not (rs2.Eof)
  strBesked = strBesked & " <br> " & rs2("tekst")
  rs2.MoveNext
Loop

Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ContentType = ""
JMail.ServerAddress = "xxx.dk"
JMail.Sender = "xxx@x.dk"
JMail.Subject = "Ugebrev"
JMail.Body = "Du skal understøtte html mails for at læse denne mail"
JMail.HTMLBody = strbesked

Do While Not (rs.Eof)
  JMail.AddRecipientBCC rs("email")
  rs.MoveNext
Loop

JMail.Execute
Set JMail = Nothing

response.write "<br><br><b>Alle beskeder blev afsendt korrekt.</b>"

Conn.Close
%>
Avatar billede busschou Praktikant
20. september 2005 - 15:40 #31
der er i øvrigt en reference til jmail her hvis det er :o)
http://support.rapidsystem.net/ntfaq/jmail.htm
Avatar billede riishoj Nybegynder
20. september 2005 - 15:52 #32
Så har du jo løst alle mine problemer. 1000 tak. Bare nysgerrig, men hvad er din baggrund inden for asp?
Avatar billede busschou Praktikant
20. september 2005 - 16:07 #33
det var så lidt og tak for points :o)
Min baggrund indenfor lige netop asp er såmend ikke andet end een hjemmeside lavet for en spejder forening hehe
Derudover læser jeg datalogi på KU så jeg er rimelig godt inde i "programmerings tankegang" hvis man kan kalde det det
Jeg er nummer 1 på point statestikken i asp kategorien herinde i år, og det er faktisk herigennem jeg har min meste erfaring
Avatar billede riishoj Nybegynder
20. september 2005 - 16:13 #34
Held og lykke med studiet. Jeg håber du kan hjælpe mig en anden gang.
Avatar billede busschou Praktikant
20. september 2005 - 16:15 #35
ha - tak skal du have, men jeg er faktisk ved at droppe ud fordi jeg hader deres nye studie struktur, hmm og fordi jeg har for meget gæld, desværre :o/
Men jo da, du råber bare højt :o)
Avatar billede riishoj Nybegynder
20. september 2005 - 17:03 #36
busschou>>Så er jeg her allerede igen. Jeg vil alligevel ikke sende mails med BBC, men da du også lavede andre ændringer kan jeg ikke gennemskue det. Kan du ikke rette det til, så det sender almindeligt (JMail.AddRecipientEx)
Avatar billede busschou Praktikant
20. september 2005 - 17:07 #37
Jo så skal den bare ind i løkken igen, med mindre folk gerne må se hinandens email adresser selvfølgelig, men det må de jo som regel ikke
---
StrSQL = "Select * from mailliste"
set rs = Conn.execute(strSQL)

Dato1 = date()
minus = "7"

SQL = "SELECT tekst,startdato,id FROM ugebrev WHERE meddeler='" & session("brugernavn") & "' AND startdato>DATE()-"&minus
Set rs2 = Conn.Execute(SQL)

Do While Not (rs2.Eof)
  strBesked = strBesked & " <br> " & rs2("tekst")
  rs2.MoveNext
Loop

Do While Not (rs.Eof)
  Set JMail = Server.CreateObject("JMail.SMTPMail")
  JMail.ContentType = ""
  JMail.ServerAddress = "xxx.dk"
  JMail.Sender = "xxx@x.dk"
  JMail.Subject = "Ugebrev"
  JMail.Body = "Du skal understøtte html mails for at læse denne mail"
  JMail.HTMLBody = strbesked
  JMail.AddRecipientEx "" & strEmail & "", "" & strEmail & ""
  JMail.Execute
  Set JMail = Nothing
  rs.MoveNext
Loop

response.write "<br><br><b>Alle beskeder blev afsendt korrekt.</b>"

Conn.Close
%>
Avatar billede riishoj Nybegynder
20. september 2005 - 17:17 #38
Jeg får fejlen

jmail.SMTPMail error '8000ffff'

The message was undeliverable. All servers failed to receive the message
Avatar billede busschou Praktikant
20. september 2005 - 17:19 #39
det kunne lyde som om du ikke har tastet den rigtige server adresse
Avatar billede riishoj Nybegynder
20. september 2005 - 17:25 #40
Jo det har jeg. Det står nøjagtig det samme som i scriptet med bbc
Avatar billede busschou Praktikant
20. september 2005 - 17:28 #41
øhh bøhh hvis du har fået mailene sendt som bcc og modtaget som bcc men ikke kan nu, så er det wierd, for fejlen lyder til at serverAddress er forkert
Avatar billede riishoj Nybegynder
20. september 2005 - 17:32 #42
Nej, scriptet med bcc virker, det er dit sidste forslag som giver fejlen
Avatar billede busschou Praktikant
20. september 2005 - 17:35 #43
aahhh det er jo klart, sorry, lavede en copy paste fejl
Du skal selvfølgelig ikke benytte strEmail men rs("email")
altså ret
JMail.AddRecipientEx "" & strEmail & "", "" & strEmail & ""
til
JMail.AddRecipientEx "" & rs("email") & "", "" & rs("email") & ""
Avatar billede riishoj Nybegynder
20. september 2005 - 18:07 #44
Øh, det var bedre, men hvorfor åbner min outlook mailen i alm. tekst nu og skriver

"Du skal understøtte html mails for at læse denne mail"
Avatar billede busschou Praktikant
20. september 2005 - 18:10 #45
prøv rette
JMail.ContentType = ""
til
JMail.ContentType = "text/html"
Avatar billede riishoj Nybegynder
20. september 2005 - 18:18 #46
Det har jeg prøvet. Så sender den ikke mailen, det er vist en almindelig "fejl"
Avatar billede riishoj Nybegynder
20. september 2005 - 21:53 #47
Jeg håber sørme ikke, at du har opgivet mig:-(
Avatar billede riishoj Nybegynder
20. september 2005 - 22:47 #48
busschou>>Jeg har fundet "fejlen". Da den begyndte at skrive

"Du skal understøtte html mails for at læse denne mail"

havde jeg været væk fra pc'en et stykke tid og åbenbart længe nok til at den famøse session var udløbet! Så vidt jeg husker er sessions sat til 20 min i default.
Avatar billede busschou Praktikant
21. september 2005 - 09:17 #49
jeg har ikke opgivet, synes bare det var besynderligt
Virker det nu så?, for jeg kan ikke se hvad sessionerne har med mail sendingen at gøre
Avatar billede riishoj Nybegynder
21. september 2005 - 12:06 #50
Jo, hvis sessionen ikke er sat, så er rs2 jo tom. Jeg kan bare ikke forstå, hvorfor den så ikke skriver
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Avatar billede busschou Praktikant
21. september 2005 - 12:11 #51
hehe aha
Så skal vi lige have sessions på plads :o)
Så snart du går ind på en asp side så får du en session, denne følger dig lige end til den dør, enten ved timeout eller ved man kalder abandon
Hvis du øverst i dit dokument har skrevet session("brugernavn") = "kontor" (eller hvad det nu var) Så bliver denne session sat hver gang du går ind på siden!
Hvis du har ventet i 20-30min eller længere, ja så er din session død, det er korrekt, men så snart du trykker F5 så oprettes der en forbindelse til serveren for at hente asp siden. Serveren opretter en ny session og den sender siden, hvorpå du igen sætter session("brugernavn") til "kontor" :o)
Er du med ? ;o)

I de eksempler jeg har set kan man både benytte JMail.Body og JMail.HTMLBody og hvis klienten så understøtter html mails så får han automatisk html delen
Men det kræver at contenttype er sat til "text/html" Så det undrer mig at den giver fejl hvis den er sat
Jeg har ikke opgivet dig!, men jeg forstår ikke helt hvori fejlen skal findes :o/
Avatar billede riishoj Nybegynder
21. september 2005 - 13:16 #52
Ja, ja jeg er med, men hør lige her. Som før sagt har jeg hentet noget af scriptet ud af et af mine andre scripts, bl.a. SELECT'en. Da jeg netop ikke får sat en session øverst i mit jmail-script, har jeg logget ind via en anden side. Den session som så bliver sat der, lever så videre og bliver brugt til at putte noget i meddeler='" & session("brugernavn"). Altså får jeg ikke sat denne session, bliver mailen sendt, men recordsettet er tomt. Forstår du hvad jeg mener?
Hvis jeg sætter contenttype="text/html", så bliver mailen ikke sendt. Jeg har læst et sted, at hvis man bruger JMail.HTMLBody , så skal man sætte contenttype="", ellers virker det ikke. Hvorfor ved jeg ikke. Correct me if I'm wrong!
Avatar billede riishoj Nybegynder
21. september 2005 - 13:23 #53
Korrektion - mailen bliver sendt, men indholdet kommer til at se sådan ud:

This is a multipart message in MIME format. ----NEXT_BM_3DC1655BDDE9432C9266451A053680AC Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: Quoted-Printable Du skal underst=F8tte html mails for at l=E6se denne mail ----NEXT_BM_3DC1655BDDE9432C9266451A053680AC Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: Quoted-Printable <br=3E 17-09-2005:<br=3Egoddag <br=3E 17-09-2005:<br=3Eugebrev <br=3E 17-09= -2005:<br=3Eugebre 37 ----NEXT_BM_3DC1655BDDE9432C9266451A053680AC--
Avatar billede busschou Praktikant
21. september 2005 - 13:27 #54
jeg har ikke hørt om den fejl, men har heller ikke selv testet det
Men i mine ører virker det som logik for burhøns at hvis contenttype="text/plain" så vises der ingen html formatering og hvis det er "text/html" så vises der formatering
Ens email program kigger jo netop i content type for at finde ud af om den skal formatere det
Hvis det står som plain text så vil du få html koden spyttet i hovedet frem for at se effekten af den
Men måske jeg ikke er nok inde i jmail alligevel så
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