Private Sub verzenden_Click()
stDocName = "Factuur"
sBon = Me.FactuurId.Value
'--------------------------------------------------------------------------------------------
' Eerst moet het rapport worden aangepast; anders wordt de volledige query verstuurd.
' We moeten dus eerst een selectie maken en opslaan. Dat gebeurt met de volgende functie.
' De functie krijgt de naam van het rapport mee, en het factuurnummer.
'--------------------------------------------------------------------------------------------
Call RapportCode(stDocName, sBon)
'--------------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------
' Ik haal het emailadres uit de keuzelijst waarin ik het bedrijf selecteer.
' Het email adres staat in de vierde kolom, en dat vraag je op de volgende manier op.
' De functie Column(#) begint namelijk bij 0 met tellen; de eerste kolom is dus 0, de tweede 1.
'--------------------------------------------------------------------------------------------
sEmail = Me.cboBedrijf.Column(3)
sEmail = Replace(sEmail, "#", "")
sEmail = Mid(sEmail, 8, Len(sEmail) - 7)
sTekst = "Hierbij willen wij de volgende artikelen bestellen. Zie bijgaande bestelbon." _
& vbCrLf & "Bestelling " & sBon
'--------------------------------------------------------------------------------------------
' Dan kunnen we de mail nu versturen!
'--------------------------------------------------------------------------------------------
Call SendEmail(stDocName, sEmail, sBon, sTekst)
'--------------------------------------------------------------------------------------------
End SubFunction RapportCode(sRapport As String, sBon As String)
Dim sTabel As String, strSQL As String, sFilter As String
'--------------------------------------------------------------------------------------------
' Eerst wordt het rapport geopend in Hidden Design modus, en de bron in een variabele gezet.
'--------------------------------------------------------------------------------------------
DoCmd.OpenReport sRapport, acViewDesign, , , acHidden
sTabel = Reports(sRapport).RecordSource
'--------------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------
' Dan wordt de recordbron aangepast. De bron kan een query of een tabel zijn.
' Daarom eerst checken wat het is. Daarna het filter toevoegen aan de variabelen.
'--------------------------------------------------------------------------------------------
If InStr(1, sTabel, "WHERE") > 0 Then
strSQL = Left(sTabel, InStr(1, sTabel, "WHERE ") - 1)
Else
If InStr(1, sTabel, " ") > 0 And InStr(1, sTabel, "[") = 0 Then
sTabel = "[" & sTabel & "]"
End If
strSQL = "SELECT * FROM " & sTabel & " "
End If
sFilter = "WHERE (BonID=" & sBon & ");"
strSQL = strSQL & sFilter
'--------------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------
' Dan wordt de recordbron opgeslagen in het rapport, en het rapport opgeslagen.
'--------------------------------------------------------------------------------------------
Reports(sRapport).RecordSource = strSQL
DoCmd.Close acReport, sRapport, acSaveYes
'--------------------------------------------------------------------------------------------
End Sub
Function SendEmail(Optional Bijlage, Optional Email, Optional Bon, Optional Tekst)
Dim sAdres As String
'--------------------------------------------------------------------------------------------
' Eerst controleren of we wel een email adres hebben; zo niet, dan een Inputbox.
'--------------------------------------------------------------------------------------------
If Email = "" Then
sAdres = InputBox("Typ een email adres", "Email adres", "mailme@stupid.com")
Else
sAdres = Email
End If
sAdres = Replace(sAdres, "Malto", "Mailto")
'--------------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------
' Vervolgens het rapport 'eindelijk' versturen als snapshot.
'--------------------------------------------------------------------------------------------
DoCmd.SendObject acSendReport, Bijlage, "SnapshotFormat(*.snp)", sAdres, , , "Bestelling " _
& Bon, Tekst, False
'--------------------------------------------------------------------------------------------
End Function
End Sub