Comment puis-je produire un rapport au format PDF, où le nom est composé des valeurs des champs?
Question
Je veux ajouter des fonctionnalités à mon rapport Access 2007 dans lequel une copie PDF du rapport est créé au clic d'un bouton. Je sais qu'il ya une macro OutputTo
qui peut le faire pour moi, mais il ne me permet pas d'inclure des valeurs de champ de rapport dans le cadre du nom du PDF, à savoir:
[Client Organisations].Code + "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy") + ".pdf"
Alors que je l'ai vu question SO , je ne voient pas l'utilisation des valeurs de champ dans l'une des réponses.
Je pense code VBA est le chemin à parcourir, donc je (sans succès) essayé ce qui suit:
Private Sub Create_PDF_Click()
DoCmd.OutputTo acOutputReport, , acFormatPDF, "" + [Client Organisations].Code
+ "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy")
+ ".pdf", True
End Sub
Erreur d'exécution '2465':
Microsoft Office Access ne peut pas trouver le champ '|' appelé dans votre expression
Toutes les idées là-bas?
La solution
Je l'ai à travailler (éventuellement).
Le sub
suivant a fait l'affaire:
Private Sub Create_PDF_Click()
Dim myPath As String
Dim strReportName As String
DoCmd.OpenReport "Invoices", acViewPreview
myPath = "C:\Documents and Settings\"
strReportName = Report_Invoices.[Client Organisations_Code] + "-" +
Report_Invoices.Clients_Code + "-" + Report_Invoices.Invoices_Code + "-" +
Format(Report_Invoices.[Invoice Date], "yyyy") + ".pdf"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, myPath + strReportName, True
DoCmd.Close acReport, "Invoices"
End Sub
Deux mises en garde:
- Le rapport doit être ouvert avant l'impression.
- Reportez-vous aux champs du même nom que le rapport qu'il considère comme. Ce
[Client Organisations].Code
a été[Client Organisations_Code]
dans le rapport.
Autres conseils
Il est plus facile à Tamisez une chaîne et y mettre votre expression entière puis le débugger pour voir si elle contient le nom du rapport valide.
Comme ceci:
Dim strReportName as String
strReportName = [Client Organisations].Code
+ "-" + Clients.Code + "-" + Invoices_Code + "-" + Format([Invoice Date],"yyyy")
+ ".pdf"
//then try to print strReportName before you use DoCmd.OutputTo.