質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

14947閲覧

Access レポートをPDF出力するOutputToメソッドにWhereCondition条件を設定したい

ryoya_access

総合スコア34

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/10/31 05:23

編集2020/10/31 05:24

Access(2007-2016)で開発中です。
以下の記事を参考にして、表形式フォームからチェックボックスを入れたレコードのみを、個別にpdf化したいと思っています。
レポートをPDFファイルに簡単に出力する方法

今回解決したい課題は、OutputToメソッドにWhereCondition条件を設定する方法が分からず、全てのレコードがPDF化されてしまう点です。以下のように、EOFを使い、全レコードをループし、印刷したいレコードを選択するチェックボックス「印刷判定チェックボックス」がTrueのレコードのみをPDF化したいと考えています。

〇T_請求書テーブル
・請求書No:オートナンバー
・請求月:日付
・請求先クライアントID:数値
・請求額:通貨

Private Sub 印刷ボタン_Click() Dim rs As DAO.Recordset Dim db As DAO.Database Dim i as Integer i = 1 Set db = CurrentDb() Set rs = db.OpenRecordset("T_請求書テーブル") Do Until rs.EOF If rs.Fields("印刷判定チェックボックス") = True Then DoCmd.OutputTo acOutputReport, "R_請求書レポート", acFormatPDF, "C:パス\PDFファイル名" & i & ".pdf" i = i + 1 Else End If rs.MoveNext Loop Set rs = Nothing Set db = Nothing End Sub

OutputToメソッドの代わりに、引数にWhereconditionが設定できるOpenReportメソッドを使った場合は、思い通りにチェックしたレコードだけをレポート表示できています。

DoCmd.OutputTo acOutputReport, "R_請求書レポート", acFormatPDF, "C:パス\PDFファイル名" & i & ".pdf" ↓ ↓変更 ↓ DoCmd.OpenReport "R_請求書レポート", acViewReport, , "[請求書No] = " & rs.Fields("請求書No")

選択したレコードのみを、個別にPDF化するにはどのようにしたらよいのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

レポートをOPenReportメソッドで抽出条件を付けてプレビューで開いてから、OutputTo すると抽出された状態でPDF出力できます。

vba

1DoCmd.OpenReport "R_請求書レポート", acViewPreview, , "[請求書No] = " & rs!請求書No 2DoCmd.OutputTo acOutputReport, "R_請求書レポート", acFormatPDF, "C:パス\PDFファイル名" & i & ".pdf" 3DoCmd.Close acReport, "R_請求書レポート""

いちいちプレビューが開くのが鬱陶しいという場合は、レポートのレコードソースのSQLを書き換えてからOutputToするといいでしょう。

下記にサンプルがありますので、ご参考に。

レポートをグループ毎に分割してPDFファイルとして保存したい - hatena chips

投稿2020/10/31 06:02

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

レポートのレコードソースにユーザー関数を条件にするようにしておき、印刷前にユーザー関数が参照するpublic変数を設定する方法が考えられます。

VBA

1Public 印刷請求書No 2 3Public Function 印刷請求書番号() 4 印刷請求書番号 = 印刷請求書No 5End Function

レポートのレコードソースでは以下のようにします。

Where [請求書No] = 印刷請求書番号()

パラメータクエリーにする方が簡単かもしれない。

投稿2020/10/31 06:00

編集2020/10/31 06:14
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問