ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Access – DoCmd.OpenReportを利用してフォームのテキストボックスに絞り込み条件を入力してレポートを開くには

with one comment

あるデータから様々な条件でレポートを出力したいとき、レポートをひとつだけ作ってデータの中身を動的に絞り込むといい。レポートのデザインは手間がかかる作業だし、レポートが共通なら後からのデザイン変更もしやすい。レポートをひとつだけ作りデータを動的に絞り込んで表示するにはDoCmdオブジェクトのOpenReportメソッドを使用する。DoCmd.OpenReportの引数は6つあり、それぞれ次のような意味を持つが、最初の引数以外は省略可能だ。

DoCmd.OpenReport レポート名 , ビューの種類 , クエリ名 , 抽出条件 , ウィンドウモード , レポートに渡す文字列

この例では「抽出条件」と「レポートに渡す文字列」を使ってみる。用意したテーブルは「生徒」という名前にし、データは次のとおり。

Access_Report_001

<Fig.1 : 用意した「生徒」テーブル>

まずこのテーブルをもとにして全件表示する「生徒」レポートを作る。

Access_Report_002

<Fig.2 : 「生徒」データを全件表示する「生徒」レポート>

「作成」メニューの「空白のフォーム」でデータを絞り込むためのフォームを作る。フォームに「ラベル」と「テキストボックス」、そして「ボタン」を作る。ラベルには「『男』または『女』を入力する」といった説明を書いておく。テキストボックスは非連結、ボタンもウィザードを使わず何も設定しないでおく。テキストボックスの名前は「性別選択」とし、ボタンの名前は「レポート表示」とする。ボタンの表題は「レポートを開く」としよう。

Access_Report_003

<Fig.3 : データを絞り込みレポートを表示するフォームを作る>

「レポート表示」ボタンのプロパティを開き、クリック時のイベントプロシージャを記述しよう。Microsoft Visual Basic for Applicationエディタが起動したら次のような式を書く。

DoCmd.OpenReport "生徒", acViewPreview, , "[性別] = ‘" & [性別選択] & "’", , "生徒名簿(" & [性別選択] & ")"

最初の引数、"生徒"、は表示するレポート名を示す。2番目の引数は印刷プレビューを指定しており、これがないといきなりプリンタに出力されてしまう。3番目の引数は省略。4番目の引数は絞り込む条件を記述している。データの[性別]がフォームの[性別選択]テキストボックスに入力されたものと同じものだけを絞り込む記述だ。5番目の引数は省略。最後6番目の引数で、レポートに「生徒名簿(男)」のように文字列を返すようにしている。

Access_Report_004

<Fig.4 : Microsoft Visual Basic for Applicationエディタにコードを記述した>

コードが記述できたらフォームを開きテキストボックスに「男」または「女」と入力して「レポートを開く」ボタンをクリックしてみよう。

Access_Report_005

<Fig.5 : 作ったフォームを開きテキストボックスに「男」と入力して「レポートを開く」ボタンをクリックする>

Access_Report_006

<Fig.6 : データが絞り込まれた「生徒」レポートが表示した>

最後にDoCmd.OpenReport式の最後の6番目の引数がレポートに反映されるようにしよう。この引数の値は、[OpenArgs]の値で表示することができる。

引数の値を表示するためレポートをデザインし、「生徒」となっているラベルをテキストボックスに変更し、テキストボックスのコントロールソースを「[OpenArgs]」とする。

Access_Report_007

<Fig.7 : DoCmd.OpenReport式の6番目の引数を表示するためテキストボックスのレポートに反映されるようにコントロールソースを「[OpenArgs]」とする>

レポートを保存し、フォームからデータを絞り込んでレポートを表示してみよう。

Access_Report_008

<Fig.8 : 絞り込み条件を「男」にしてレポートを開く>

Access_Report_009

<Fig.9 : 条件が「男」に絞り込まれ表題のテキストボックスに引数が表示されている>

Access_Report_010

<Fig.10 : 絞り込み条件を「女」にしてレポートを開く>

Access_Report_011

<Fig.11 : 条件が「女」に絞り込まれ表題のテキストボックスに引数が表示されている>

Written by Yoshio Matsumoto

2012年7月16日 @ 3:53 AM

コメント / トラックバック1件

Subscribe to comments with RSS.


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。