Microsoft Accessを使用して、特定の会社にのみレポートを印刷する方法について解説します。特に、質問者が求めているように、指定した会社(この場合はA社)のみ特定のレポート(検査成績書)を印刷する方法を、AccessのVBAコードを使って実現する方法を解説します。
1. 問題の概要
質問者は、あるリスト(W発注一覧)から「A社のみ」に対して特定のレポートを印刷したいという要望を持っています。基本的には、複数の会社(10社)のうち9社は3つのレポートを印刷し、1社だけが4つ目のレポート(検査成績書)を印刷するようにしたいという内容です。
2. 条件に合わせたVBAコードの修正方法
この問題を解決するためには、`WHERE`句で「仕入先 = ‘A社’」の条件を加えることで、A社のみ印刷するように条件を設定できます。具体的には、VBAコードを以下のように修正します。
Set rs = CurrentDb.OpenRecordset("select distinct 仕入先 from W発注一覧 WHERE 数量 >0", dbOpenDynaset) Do Until rs.EOF If rs!仕入先 = "A社" Then ' A社の場合のみレポートを印刷 DoCmd.OpenReport "R_検査成績書", acViewPreview, , "仕入先 = 'A社' AND 数量 > 0", acWindowNormal DoCmd.OutputTo acOutputReport, "R_検査成績書", acFormatPDF, CurrentProject.Path & "\検査成績書_" & rs!仕入先 & "_" & Format(Now, "yyyymmdd-hhnn") & "_.pdf" DoCmd.Close acReport, "R_検査成績書" End If rs.MoveNext Loop
上記のコードでは、`If rs!仕入先 = “A社” Then`という条件を追加して、A社のみが対象となるようにしています。これにより、A社のみに対して検査成績書の印刷が行われるようになります。
3. 他の会社には3つのレポートを印刷する方法
他の9社には3つのレポートだけを印刷するため、`If`文の中で「A社」の条件以外の会社にも対応できます。この場合、A社以外の会社には別の処理を行い、必要なレポートのみを印刷することができます。
4. まとめ
Accessを使用して、特定の会社に対してのみレポートを印刷する方法について解説しました。上記のVBAコードを使用することで、A社にだけ検査成績書を印刷することができます。必要に応じて、他の会社には異なるレポートを印刷させることも可能です。VBAを使いこなすことで、Accessでのレポート印刷を柔軟に管理することができます。


コメント