Comment puis-je produire un rapport au format PDF, où le nom est composé des valeurs des champs?

StackOverflow https://stackoverflow.com/questions/2296884

  •  21-09-2019
  •  | 
  •  

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?

Était-ce utile?

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:

  1. Le rapport doit être ouvert avant l'impression.
  2. 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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top