Toon posts:

CDONTS loop binnen loop

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb hier een sendmail functie die gebruik maakt van CDO for NTS. Hij ziet er nu zo uit (globaal):

rsADO.MoveFirst
Do Until rsADO.EOF


Set objNewMail = New CDONTS.NewMail
Body = "Geachte heer/ mevrouw," & Chr(13) & _
"" & Chr(13) & _
"blaaaa" & Chr(13) & _
"blaaaa" & Chr(13) & _
"" & Chr(13) & _
"Dit is een testmail"

objNewMail.Send "ik@bedrijf.com", _
rsADO!CTP_EMAIL_ADRES, _
"Specificatie " & rsADO!SPEC_DATUM_BEREKENING, _
Body, _
2

Set objNewMail = Nothing
rsADO.MoveNext
Loop

het gaat hier om rekening specificaties van abonnementen.
Als een bedrijf dus meerdere abonnementen heeft krijgt dat bedrijf ook meerdere e-mails...hoe zet ik nu een lus binnen de lus die er al is die ervoor zorgt dat alle abonnementen in 1 e-mail komen te staan?
Grtz, Paul.....

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 16-09 11:38
Volgens mij kan het niet, althans met asp lukt het mij niet

ik doe bv, SQL = "SELECT nerds FROM got WHERE username = miseter_X"

en dan

do while not objrec.eof
hier begint de loop
en dan zou jij hier nog een

SQl = "select nerds FROM got WHERE username = tux_nl"
do while not objrec.eof

hier de 2e loop
objrec.movenext
loop

en dan van de eerste nog
objrec.movenext
loop

en dat zijn dus 2 loops die allebei zo niet werken :) :) :)

volgens mij ben ik een beetje teveel naar rechts onder gelult, wat hier boven staat slaat nergens op... althans, ik wweet niet hoe ik moet loopen binnen een loop :) hehe

ow misschien moet je het anders doen,
een IF THEN, ELSE , END IF


IF bedrijf heeft meerdere bedrijven THEN
meer emails
ELSE
1 email
END IF

dit kan je wel in een loop zetten, maar de "meer emails" moet je alvast hebben als ze er zijn. dus dan weer een check doen of er meer emails zijn.

  • tus
  • Registratie: November 2000
  • Laatst online: 05-07-2012

tus

Zoiets misschien? Het kan ook met 1 query, maar dan moet je wel de gegevens vd volgende record onthouden. Ik vind dit persoonlijk mooier :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
strSQL = "SELECT DISTINCT bedrijfsnaam FROM tabel ORDER BY bedrijfsnaam"

rsADO.Open strSQL

Do While NOT rsADO.EOF
  strSQL = "SELECT * FROM tabel WHERE bedrijfsnaam = '" & rsADO!bedrijfsnaam & "'"

  'nieuwe mail

  rsADO2.Open strSQL
  Do While Not rsADO2
    'body opbouwen van mail
    rsADO2.MoveNext
  Loop

  'versturen die mail
  rsADO.MoveNext
Loop

Verwijderd

Topicstarter
hmm....nu stuurt ie per bedrijf net zoveel e-mails als dat er abonnementen zijn en zet ie in die e-mail alle abonnementen dus ook de abonnementen die niet bij dat bedrijf horen....hij ziet er nu zo uit:

Public Function SendMail() As Boolean
Dim rsADO As ADODB.Recordset
Dim rsADO2 As ADODB.Recordset
Dim objNewMail As CDONTS.NewMail
Dim Body As String
Dim Body2 As String
Dim Body3 As String
Dim sql As String

On Error GoTo ErrExit

OpenConnection

Set cmnADO = CreateCommand(conADO, "sp_select_te_factureren_bedrijf", sPeriodeVan, sPeriodeTot)
Set rsADO2 = CreateRecordset(cmnADO, True)

Set cmnADO = CreateCommand(conADO, "SP_SELECT_HISTORY_SPEX", 1, sPeriodeVan, sPeriodeTot)
Set rsADO = CreateRecordset(cmnADO, True)

rsADO2.MoveFirst
Do Until rsADO2.EOF

Set objNewMail = New CDONTS.NewMail


Body = "Geachte heer/mevrouw," & vbCrLf & _
"Binnenkort zullen de volgende bedragen van uw rekening worden afgeschreven:" & vbCrLf & _
"" & vbCrLf & _
""

rsADO.MoveFirst
Body2 = ""
Do Until rsADO.EOF
Body2 = Body2 & rsADO!ABON_VOLLEDIGE_OMSCHRIJVING & vbCrLf
rsADO.MoveNext
Loop

Body3 = "" & vbCrLf & _
"Met vriendelijke groeten," & vbCrLf & _
" BLAAA"

objNewMail.Send "ik@bedrijf", _
"ik@bedrijf", _
"Rekeningspecificatie ", _
Body & Body2 & Body3, _
1


Set objNewMail = Nothing
rsADO2.MoveNext
Loop

SendMail = True
Exit Function

ErrExit:
SetError "Error in clsFactuur.SendMail (" & Err.Number & ") " & Err.Description
ClearADOVars

End Function

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
rs.Open "Select * from tabel group by bedrijfsnaam_kolomnaam"
t=""

do while not rs.eof
  t = rs("bedrijfsnaam_kolomnaam")
  if t <> rs("bedrijfsnaam_kolomnaam") then
    'verzend email
  else
    ' voeg bij aan email
  end if
loop

rs.close

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 14:12

Exterazzo

Qeasy

Deze staat (geloof ik) wel in het verkeerde forum.

Audentia


  • tus
  • Registratie: November 2000
  • Laatst online: 05-07-2012

tus

Op dinsdag 30 oktober 2001 14:18 schreef KaReL het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
rs.Open "Select * from tabel group by bedrijfsnaam_kolomnaam"
t=""

do while not rs.eof
  t = rs("bedrijfsnaam_kolomnaam")
  if t <> rs("bedrijfsnaam_kolomnaam") then
    'verzend email
  else
    ' voeg bij aan email
  end if
loop

rs.close
t = rs("bedrijfsnaam_kolomnaam")
if t <> rs("bedrijfsnaam_kolomnaam") then

sorry, maar is dit niet altijd gelijk?

edit:

en waar is de MoveNext en MoveFirst trouwens?

Verwijderd

nope, dit is als reactie op het verzenden van die emails...

Gebruik dat stuk code & geen problemen meer B-)

en je kan evengoed emails verzenden vanuit Visual Basic als vanuit ASP.... dus ik denk niet dat het verkeerd staat...

  • tus
  • Registratie: November 2000
  • Laatst online: 05-07-2012

tus

Op dinsdag 30 oktober 2001 14:07 schreef Tux_NL het volgende:
...

Set cmnADO = CreateCommand(conADO, "sp_select_te_factureren_bedrijf", sPeriodeVan, sPeriodeTot)
Set rsADO2 = CreateRecordset(cmnADO, True)

Set cmnADO = CreateCommand(conADO, "SP_SELECT_HISTORY_SPEX", 1, sPeriodeVan, sPeriodeTot)
Set rsADO = CreateRecordset(cmnADO, True)

...
zou ik die 2 sps mogen zien?

Verwijderd

Topicstarter
Uhm...ik ga et anders proberen...
Moment...

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 14:12

Exterazzo

Qeasy

Op dinsdag 30 oktober 2001 14:26 schreef KaReL het volgende:
nope, dit is als reactie op het verzenden van die emails...

Gebruik dat stuk code & geen problemen meer B-)

en je kan evengoed emails verzenden vanuit Visual Basic als vanuit ASP.... dus ik denk niet dat het verkeerd staat...
jah mar het gaat hier over ASP

Audentia


Verwijderd

Topicstarter
Nah hij doet het nu zoals ik het wil...
heb et zo gedaan nu:

Set cmnADO = CreateCommand(conADO, "SP_SELECT_HISTORY_SPEX", 1, sPeriodeVan, sPeriodeTot)
Set rsADO = CreateRecordset(cmnADO, True)

rsADO.MoveFirst
Do Until rsADO.EOF

Set objNewMail = New CDONTS.NewMail

sBody = ""

sBody = "Geachte heer/mevrouw," & vbCrLf & _
"Binnenkort zullen de volgende bedragen van uw rekening worden afgeschreven:" _
& vbCrLf & vbCrLf & vbCrLf

lBdrID = rsADO!Bdr_ID

Do Until rsADO.EOF

If rsADO!Bdr_ID <> lBdrID Then
Exit Do
End If

sBody = sBody & rsADO!ABON_VOLLEDIGE_OMSCHRIJVING & vbCrLf

rsADO.MoveNext
Loop

sBody = sBody & vbCrLf & vbCrLf & _
"Met vriendelijke groeten," & vbCrLf & _
" "

objNewMail.Send "paul@bedrijf.nl", _
"paul@bedrijf.nl", _
"Rekeningspecificatie ", _
sBody, 1

Set objNewMail = Nothing
Loop

Thnx...
Pagina: 1