gangstalaz
Gebruiker
- Lid geworden
- 13 sep 2010
- Berichten
- 131
Hallo,
Ik gebruik access 2003 en heb een database die als doel heeft om materialen bij leveranciers te bestellen voor eigen gebruik.
Mijn formulier bestaat uit een hoofdformulier en een subformulier.
Ik kan hier in de database een rapport maken, printen en versturen.
Alleen doe ik het niet op de juiste manier volgens mij.
Ik krijg een goed rapport als ik altijd een rapport baseer op BestellingID --> 1. Dus op het formulier krijg ik altijd eerst de gegevens van de vorige keer te zien. Deze vervang ik dan met de gegevens die ik dan nodig heb (nieuwe bestelling).
Dus alle bestellingen zijn dan BestellingID 1.
Ik heb ook geprobeerd om een schoon formulier te gebruiken (pijltje onderin). Maar als ik het formulier invul en daarna naar het rapport kijk, krijg ik de artikelen van het vorige formulier en van het huidige formulier te zien.
Ook worden de formulieren met dezelfde leveranciers_ID samengevoegd in het rapport.
Volgens mij moet ik gebruik maken van BestellingID om het formulier naar het rapport te kunnen verwijzen.
Ik had een tijdje geleden de volgedne code nog gekregen. Deze heb ik proberen aan te passen voor mijn situatie maar het lukt maar niet. Ik krijg telkens een foutmelding.
Is er misschien een ander goedwerkende methode? Of kan iemand dit voor mijn situatie aanpassen?
Op dit moment worden de rapporten in Snapshot Format verstuurd. Snapshot format is toch te openen bij de meeste computers?
Alvast bedankt!
Ik gebruik access 2003 en heb een database die als doel heeft om materialen bij leveranciers te bestellen voor eigen gebruik.
Mijn formulier bestaat uit een hoofdformulier en een subformulier.
Ik kan hier in de database een rapport maken, printen en versturen.
Alleen doe ik het niet op de juiste manier volgens mij.
Ik krijg een goed rapport als ik altijd een rapport baseer op BestellingID --> 1. Dus op het formulier krijg ik altijd eerst de gegevens van de vorige keer te zien. Deze vervang ik dan met de gegevens die ik dan nodig heb (nieuwe bestelling).
Dus alle bestellingen zijn dan BestellingID 1.
Ik heb ook geprobeerd om een schoon formulier te gebruiken (pijltje onderin). Maar als ik het formulier invul en daarna naar het rapport kijk, krijg ik de artikelen van het vorige formulier en van het huidige formulier te zien.
Ook worden de formulieren met dezelfde leveranciers_ID samengevoegd in het rapport.
Volgens mij moet ik gebruik maken van BestellingID om het formulier naar het rapport te kunnen verwijzen.
Ik had een tijdje geleden de volgedne code nog gekregen. Deze heb ik proberen aan te passen voor mijn situatie maar het lukt maar niet. Ik krijg telkens een foutmelding.
Code:
Private Sub Rapport_Verzenden_Click()
Dim strSQL As String, strSQL_Rapport As String
Dim sFilter As String, sTabel As String, sBestelRegel_ID As String
Dim x As Integer
strSQL = "SELECT * FROM tblBestellingen"
sRapport = "rpt_tblBestellingen"
DoCmd.Echo False, "Bezig met openen van recordset."
With CurrentDb.OpenRecordset(strSQL)
'Records doorlopen, en rapport voor elk record instellen en mailen
iAantal = .RecordCount
If iAantal > 0 Then
x = x + 1
[COLOR="red"]sBestelRegel_ID = rst.Fields("BestellingID").Value[/COLOR]
DoCmd.Echo False, "Samenvoegen van Record " & x & " van " & iAantal & " records..."
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 (BestellingID=" & sBestelRegel_ID & ");"
strSQL_Rapport = strSQL_Rapport & sFilter
''tmp = InputBox("", "", strSQL)
Reports(sRapport).RecordSource = strSQL_Rapport
DoCmd.Close acReport, sRapport, acSaveYes
DoCmd.SendObject acSendReport, sRapport, acFormatPDF, "mailadres@mail.com", , , "Subject", "Message", False
.MoveNext
End If
.Close
End With
DoCmd.Echo True
End Sub
Is er misschien een ander goedwerkende methode? Of kan iemand dit voor mijn situatie aanpassen?
Op dit moment worden de rapporten in Snapshot Format verstuurd. Snapshot format is toch te openen bij de meeste computers?
Alvast bedankt!