Avatar billede hehlers Nybegynder
21. juni 2007 - 10:24 Der er 8 kommentarer og
1 løsning

udskrive TOP 10 recordset i nyhedsmail

Hejsa

Jeg har et nyhedsmailmodul som udsender mails til nogle bestemt udvalgte i en db. I den mail vil jeg gerne have en liste med den pågælende brugers sidste 10 indbetalinger.

Jeg har følgende kode, som desværre ikke virker:
-----------------------------------------------

strSQL = "SELECT tbl_user.navn,tbl_user.login_id,email,konto_ialt from tbl_user,tbl_konto where konto_ialt <> 0 and tbl_user.login_id = tbl_konto.login_id"
    Set res = Conn.Execute(strSQL)
   
    Query= " SELECT TOP 10 * from tbl_indb where login_id=" & res("login_id")
    Set ResInd = Conn.Execute(Query)
   
    do while not res.eof
   
    dato = left(dateadd("d", 14, now()),10)

    Set objMail = Server.CreateObject("JMail.SMTPMail")
    objMail.Silent = True
    objMail.ServerAddress = "-"
    objMail.Sender = "mail"
    objMail.Subject = "faktura"
    objMail.AddRecipient res("email")
    objMail.HTMLBody = "<html><head><title></title></head><body vlink='#666666' link='#000000' bgcolor='#ffffff'>Hej " & res("navn") &"<p>Dette er din faktura fra denne måned. <p><b>Din saldo: " & res("konto_ialt") &" kr.</b><p>Beløbet bedes indbetalt senest den " & dato &" på følgende konto:<p>Reg: xxxx Konto: xxxxxxxxxxxx<p>Dine seneste indbetalinger:<p><table><tr><td>Dato</td><td>Beløb</td></tr>" & do while not ResInd.EOF &"<tr><td>" & ResInd("dato") &"</td><td>" & ResInd("beloeb") &""& ResInd.MoveNext loop &"<p>Tak for din deltagelse <p>Med venlig hilsen<p><p>-</body></html>"
 
    objMail.execute
    set objMail = nothing
    Res.MoveNext
    loop
   
    resInd.close
    set resInd = nothing
    res.close
    set res = nothing
-------------------------------------
Inde i HTML body har jeg et loop. Kan man ikke det?

På forhånd tak

Henrik
Avatar billede -mundi- Nybegynder
21. juni 2007 - 10:31 #1
Utestet :

strSQL = "SELECT tbl_user.navn,tbl_user.login_id,email,konto_ialt from tbl_user,tbl_konto where konto_ialt <> 0 and tbl_user.login_id = tbl_konto.login_id"
Set res = Conn.Execute(strSQL)

Query= "SELECT TOP 10 * from tbl_indb where login_id=" & res("login_id")
Set ResInd = Conn.Execute(Query)

do while not res.eof

dato = left(dateadd("d", 14, now()),10)

Set objMail = Server.CreateObject("JMail.SMTPMail")
objMail.Silent = True
objMail.ServerAddress = "-"
objMail.Sender = "mail"
objMail.Subject = "faktura"
objMail.AddRecipient res("email")

bodyText = "<html><head><title></title></head><body vlink='#666666' link='#000000' bgcolor='#ffffff'>Hej " & res("navn") &"<p>Dette er din faktura fra denne måned. <p><b>Din saldo: " & res("konto_ialt") &" kr.</b><p>Beløbet bedes indbetalt senest den " & dato &" på følgende konto:<p>Reg: xxxx Konto: xxxxxxxxxxxx<p>Dine seneste indbetalinger:<p><table ID="Table1"><tr><td>Dato</td><td>Beløb</td></tr>"
do while not ResInd.EOF
    bodyText = bodyText & "<tr><td>" & ResInd("dato") &"</td><td>" & ResInd("beloeb") &""
    ResInd.MoveNext
loop
bodyText = bodyText & "<p>Tak for din deltagelse <p>Med venlig hilsen<p><p>-</body></html>"
objMail.HTMLBody = bodyText
objMail.execute
set objMail = nothing
Res.MoveNext
loop

resInd.close
set resInd = nothing
res.close
set res = nothing
Avatar billede softspot Forsker
21. juni 2007 - 10:34 #2
Du kan ikke lave en løkke inde midt en strengsammensætning på denne måde, du er nød til at lave strengsammensætningen inden du tildeler strengen til HTMLBody. Desuden skal du nok lave dit inderste opslag inde i den første løkke, ellers har du ikke det rigtige id at slå op med. Jeg vil tro følgende vil fungere bedre:

strSQL = "SELECT tbl_user.navn,tbl_user.login_id,email,konto_ialt from tbl_user,tbl_konto where konto_ialt <> 0 and tbl_user.login_id = tbl_konto.login_id"
Set res = Conn.Execute(strSQL)
   
do while not res.eof
   
  dato = left(dateadd("d", 14, now()),10)

  Set objMail = Server.CreateObject("JMail.SMTPMail")
  objMail.Silent = True
  objMail.ServerAddress = "-"
  objMail.Sender = "mail"
  objMail.Subject = "faktura"
  objMail.AddRecipient res("email")

  Query= " SELECT TOP 10 * from tbl_indb where login_id=" & res("login_id")
  Set ResInd = Conn.Execute(Query)

  body = "<html><head><title></title></head><body vlink='#666666' link='#000000' bgcolor='#ffffff'>Hej " & res("navn") &"<p>Dette er din faktura fra denne måned. <p><b>Din saldo: " & res("konto_ialt") &" kr.</b><p>Beløbet bedes indbetalt senest den " & dato &" på følgende konto:<p>Reg: xxxx Konto: xxxxxxxxxxxx<p>Dine seneste indbetalinger:<p><table><tr><td>Dato</td><td>Beløb</td></tr>"

  do while not ResInd.EOF
    body = body & "<tr><td>" & ResInd("dato") &"</td><td>" & ResInd("beloeb")
    ResInd.MoveNext
  loop

  body = body & "<p>Tak for din deltagelse <p>Med venlig hilsen<p><p>-</body></html>"

  objMail.HTMLBody = body

  resInd.close
  set resInd = nothing

  objMail.execute
  set objMail = nothing
  Res.MoveNext
loop
   
res.close
set res = nothing
Avatar billede -mundi- Nybegynder
21. juni 2007 - 10:34 #3
hov,

<table ID="Table1"> skal erstattes med
<table ID=""Table1"">
eller
<table ID='Table1'>
Avatar billede hehlers Nybegynder
21. juni 2007 - 11:50 #4
Jeg brugte softspots forslag med stor succes. :)

Tak til jer begge. Svarer du lige softspot?
Avatar billede softspot Forsker
21. juni 2007 - 12:00 #5
Velbekomme :)
Avatar billede hehlers Nybegynder
21. juni 2007 - 12:22 #6
Lige et tillægsspørgsmål Hvis jeg vil have udskrivet måneden i mailen også, hvad skal jeg så skrive?

Jeg har prøvet med month(), men det virker ikke...
Avatar billede softspot Forsker
21. juni 2007 - 12:28 #7
Hvis det er den aktuelle måneds navn du vil have skrevet ud, så kan du benytte MonthName(now), hvis det er månedens nummer kan du bruger Month(now).

Hvis det ikke var det du tænkte på, må du lige specificere dit krav yderligere :)
Avatar billede softspot Forsker
21. juni 2007 - 12:29 #8
Tak for point :)
Avatar billede hehlers Nybegynder
21. juni 2007 - 12:45 #9
thx ;)
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