2017-08-02 9 views
0

IDごとにAccess 2010レポートを印刷したいとします。VBAを使用してID別に印刷する

私のレポート構造は次のようであると言うことができます:

ID1, Name1, phone1, address1, 

ID1, Name2, phone2, address2, 

ID2, Name, phone, address, 

ID3, Name1, phone1, address1, 

ID3, Name2, phone2, address2, 

各IDは、このような個別の.pdfファイルに書き込まれるようにするために私がしたいことは次のとおりです。

ID1.pdfは含まれています

ID1, Name1, phone1, address1, 

ID1, Name2, phone2, address2, 

ID2.pdfは含まれています

ID2, Name, phone, address, 

ID3.pdfは含まれています

ID3, Name1, phone1, address1, 

ID3, Name2, phone2, address2, 

は、私は、次のコードを作成しました:

Private Sub PrintPDF_Click() 

Dim rst As DAO.Recordset 
Dim OutputFile As String 
Dim FileSavePath As String 

FileSavePath = "C:\Test\" 
Set rst = CurrentDb.OpenRecordset("SELECT distinct ID FROM Report_Query ORDER BY _ID") 
With rst 
Do Until .EOF 

DoCmd.OutputTo acOutputReport, Bericht1, acFormatPDF, FileSavePath & ![ID] & ".pdf", True 

.MoveNext 

Loop 

End With 

End Sub 

ネーミングはよく働いているが、それはすべてのレコードを出力します。 ID1.pdf、ID2.pdf、ID3.pdfがありますが、各ファイルにはすべてのレコードが含まれています。

IDごとに1つのファイルを作成するにはどうすればよいですか?

+1

レコードセットループの内側 - 単一IDにフィルタリングされたレポートを開いてレポートを閉じる、レポートを閉じる、次のレコードに移動する、単一IDにフィルタリングされたレポートを開く、レポートを出力する、レポートを閉じる、移動する... – June7

+0

idごとにクエリを実行できます。 'SELECT distinct ID FROM Report_Query ID =' ID1 'ORDER BY _ID' – Maddy

+0

のように、すべてのIDを繰り返し処理する外部ループがあります。 'DoCmd.OutputTo ...'行の前に、もう1つのクエリを入れてください。 '私は、ID = rst.ID'のreport_queryから欲しいデータを選択する....のようなもので、' With First ... End With'を取り除き、 'Do Until rst.EOF'と' rst.MoveNext'を使います。 – jsotola

答えて

0

この方法を試してください。

1)は、すべて異なるIDが

2)各ID

4)

を試験していない

PDFに保存するためのアレイを介してアレイ

3)ループにレコードを変換抽出します

Private Sub PDF_Click() 
    Dim rst As DAO.Recordset 
    Dim OutputFile As String 
    Dim FileSavePath As String 
    Dim vArray As Variant 
    Set rst = CurrentDb.OpenRecordset("SELECT distinct ID FROM Report_Query ORDER BY ID") 
    With rst 
     .MoveLast 
     .MoveFirst 
     vArray = .GetRows(.RecordCount) 
    End With 
    For Each ID In vArray 
     FileSavePath = "C:\Test\" & Format(ID, "000000") & ".pdf" 
    ' execute Query here 
    '("select * from Report_Query where ID = " & ID) 
    'save recordset in PDF format here 
    Next ID 
    End Sub 
関連する問題