In Access verstuur ik facturen per mail en voor de klanten die geen email hebben worden deze geprint. Dit lukt allemaal met de onderstaande code. Echter nadat ik de verzonden en geprinte facturen naar een tabel heb geexporteerd en gezorgd heb dat de query (qryOrdergegevensFacturen) voor het rapport leeg is en dan toch de code laat werken worden er toch facturen geproduceerd, echter zonder de gegevens, dus alleen de layout. Na nieuwe orders bevat de query weer gegevens om de facturen weer te mailen/printen. Bij het nazoeken waarom heb ik ontdekt dat Reports(sRapport) dit aangeeft: The reportname VerzendenFacturen you entered is misspelled or.... Verder gevonden dat dit error 2451 is. Ik heb op het internet gezocht naar oplossingen, maar helaas niet zelf op kunnen lossen.
Ik ben geen ervaren vba gebruiker. Kan iemand mijn helpen. De oplossing hoeft alleen maar te vertellen dat er geen gegevens beschikbaar zijn voor mailen/printen en dus verder geen actie. Bij voorbaat mijn dank.
Dim strSQL As String, strSQL_Rapport As String, sRapport As String
Dim sFilter As String, sTabel As String
Dim iAantal As Integer
strSQL = "SELECT * FROM tblEmail"
sRapport = "VerzendenFacturen"
With CurrentDb.OpenRecordset(strSQL)
'Records doorlopen, en rapport voor elk record instellen en mailen
.MoveLast
.MoveFirst
iAantal = .RecordCount
If iAantal = 0 Then Exit Sub
Do While Not .EOF
DoCmd.OpenReport sRapport, acViewDesign, , , acHidden
sTabel = Reports(sRapport).RecordSource
If InStr(1, UCase(sTabel), "WHERE") > 0 Then
strSQL_Rapport = Left(sTabel, InStr(1, sTabel, "WHERE ") - 1)
Else
If InStr(1, UCase(sTabel), "SELECT") = 0 Then
If InStr(1, sTabel, " ") > 0 And InStr(1, sTabel, "[") = 0 Then
sTabel = "[" & sTabel & "]"
End If
strSQL_Rapport = "SELECT * FROM " & sTabel & " "
Else
strSQL_Rapport = sTabel
End If
End If
'Extra loopje, om de punt-komma's te verwijderen.
Do Until Right(strSQL_Rapport, 1) <> ";"
strSQL = Left(strSQL_Rapport, Len(strSQL_Rapport) - 1)
Loop
'Klantfilter op rapport zetten
sFilter = " WHERE (Klantnummer =" & !KlantID & ");"
strSQL_Rapport = strSQL_Rapport & sFilter
Reports(sRapport).RecordSource = strSQL_Rapport
DoCmd.Close acReport, sRapport, acSaveYes
'Controle of een mailadres aanwezig is
If !Mac <> 1 Then
'Factuur printen
DoCmd.OpenReport sRapport, acNormal
Else
'Factuur verzenden
DoCmd.SendObject acSendReport, sRapport, acFormatPDF, !Email, , , "Van Zomerschool voor " _
& !KlantNaam, " Hierbij als bijlage het bericht voor uw activiteiten 2013", True
End If
.MoveNext
Loop
.Close
End With
End Sub
Ik ben geen ervaren vba gebruiker. Kan iemand mijn helpen. De oplossing hoeft alleen maar te vertellen dat er geen gegevens beschikbaar zijn voor mailen/printen en dus verder geen actie. Bij voorbaat mijn dank.
Dim strSQL As String, strSQL_Rapport As String, sRapport As String
Dim sFilter As String, sTabel As String
Dim iAantal As Integer
strSQL = "SELECT * FROM tblEmail"
sRapport = "VerzendenFacturen"
With CurrentDb.OpenRecordset(strSQL)
'Records doorlopen, en rapport voor elk record instellen en mailen
.MoveLast
.MoveFirst
iAantal = .RecordCount
If iAantal = 0 Then Exit Sub
Do While Not .EOF
DoCmd.OpenReport sRapport, acViewDesign, , , acHidden
sTabel = Reports(sRapport).RecordSource
If InStr(1, UCase(sTabel), "WHERE") > 0 Then
strSQL_Rapport = Left(sTabel, InStr(1, sTabel, "WHERE ") - 1)
Else
If InStr(1, UCase(sTabel), "SELECT") = 0 Then
If InStr(1, sTabel, " ") > 0 And InStr(1, sTabel, "[") = 0 Then
sTabel = "[" & sTabel & "]"
End If
strSQL_Rapport = "SELECT * FROM " & sTabel & " "
Else
strSQL_Rapport = sTabel
End If
End If
'Extra loopje, om de punt-komma's te verwijderen.
Do Until Right(strSQL_Rapport, 1) <> ";"
strSQL = Left(strSQL_Rapport, Len(strSQL_Rapport) - 1)
Loop
'Klantfilter op rapport zetten
sFilter = " WHERE (Klantnummer =" & !KlantID & ");"
strSQL_Rapport = strSQL_Rapport & sFilter
Reports(sRapport).RecordSource = strSQL_Rapport
DoCmd.Close acReport, sRapport, acSaveYes
'Controle of een mailadres aanwezig is
If !Mac <> 1 Then
'Factuur printen
DoCmd.OpenReport sRapport, acNormal
Else
'Factuur verzenden
DoCmd.SendObject acSendReport, sRapport, acFormatPDF, !Email, , , "Van Zomerschool voor " _
& !KlantNaam, " Hierbij als bijlage het bericht voor uw activiteiten 2013", True
End If
.MoveNext
Loop
.Close
End With
End Sub