gewenst bestel formulier printen of mailen

Status
Niet open voor verdere reacties.

jo geuens

Gebruiker
Lid geworden
13 feb 2010
Berichten
190
hoi ik ben een database gemaakt met produkten die ik in een bestel form kan kiezen ann de hand van afhankelijke lijsten nu als ik wil printen print hij alle bestellingen of als ik deze wil doormailen maakt hij van alles een html bestandje
ik heb al op het forum gezocht maar wat ik vind werk niet ik doe blijkbaar toch iets fout
weet iemand raad

ik kan mijn bestande eventueel door mailen als dat makkelijker is om te kijken waar ik de mist inga
 
Er staan onderhand tientallen voorbeelden over dit onderwerp op dit forum, want het komt heel regelmatig terug. Een optie die ik zelf gebruik is de volgende: ik open het rapport, verander de filtering, sla het rapport op en mail het vervolgens. De filtering gaat zo:

Code:
Sub RapportCode(sRapport As String, sBon As String)
    
    DoCmd.OpenReport sRapport, acViewDesign, , , acHidden
    sTabel = Reports(sRapport).RecordSource
    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
    Reports(sRapport).RecordSource = strSQL
    DoCmd.Close acReport, sRapport, acSaveYes
End Sub
 
mailen

hoi octafisch
ik heb de code achter de knop geplakt maar nu doet deze helemaal niks
 
Dan gebruik je hem niet helemaal goed. Nou heb ik 'm zelf ook niet helemaal goed gepost, dus hierbij een nieuwe poging.... ik heb er nu een functie van gemaakt, die wat flexibeler is, en nu ook de veldnaam vraagt/uitleest.
Eerst de functie, die je in elke (nieuwe) module kunt zetten. Die ziet er zo uit:

Code:
Function RapportCode(sRapport As String, sKey As String, sVeld As String)
Dim sTabel As String, strSQL As String, sFilter As String

    If Left(sVeld, 1) <> "[" Then sVeld = "[" & sVeld & "]"
    DoCmd.OpenReport sRapport, acViewDesign, , , acHidden
    sTabel = Reports(sRapport).RecordSource
    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
    If IsNumeric(sKey) Then
        sFilter = "WHERE (" & sVeld & "=" & sKey & ");"
    Else
        sFilter = "WHERE (" & sVeld & "='" & sKey & "');"
    End If
    strSQL = strSQL & sFilter
    Reports(sRapport).RecordSource = strSQL
    DoCmd.Close acReport, sRapport, acSaveYes

End Function

Hij vraagt een aantal argumenten (dat deed de vorige overigens ook; daar ging je dan ook de mist in...) namelijk een Rapportnaam, een Veldnaam en een Waarde. Deze worden dan ook meegegeven als je de functie aanroept.
In het volgende voorbeeld gebruik ik een formulierveld met de sleutelwaarde van het huidige formulierrecord. Logischerwijze (in ieder geval in dit voorbeeld) haal ik dat sleutelveld uit hetzelfde tekstveld; het nummer is namelijk gekoppeld aan hetzelfde tabelveld als waarop het rapport is gebaseerd. Oftewel: als ik de Besturingselementbron van het tekstveld uitlees, en de waarde, dan heb ik al twee elementen voor de functie! De derde is, zoals gezegd, de naam van het rapport. De code ziet er dan ongeveer zo uit:

Code:
Dim stDocName As String, sVeldNaam As String, iRec As String
    iRec = Me.Nr.Value          ' De waarde van het sleutelveld
    sVeldNaam = Me.Nr.ControlSource          ' De naam van het sleutelveld
    stDocName = "rptBronbestand"
    ' Hierna roepen we de functie aan met de variabelen...
    Call RapportCode(stDocName, iRec, sVeldNaam)
    ' En daarna kunnen we het rapport openen met het geselecteerde record.
    DoCmd.OpenReport stDocName, acPreview

De laatste code zit dus onder de printknop, mocht dat nog niet duidelijk zijn!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan