実際のデータベースアプリケーションでは、フォーム上でその範囲や条件を指定してレポートを開くことが多いですが、ここでは、レポートをデータベースウィンドウから直接開く場合にも同様の印刷範囲のパラメータ入力用のフォームを必ず表示させるという方法について説明します。
- まず、レポートおよびパラメータ入力用のフォームを作成します。ここではレポート名を"rpt受注"、フォーム名を"fdlg受注印刷"とします。また、印刷範囲のパラメータを指定するテキストボックスとして"txt得意先コード"を配置するものとします。
![レポートのデザイン](images/tips_330a.gif)
![フォームのデザイン](images/tips_330b.gif)
- 続いて、レポートのレコードソースとなるクエリを加工し、fdlg受注印刷フォームの「txt得意先コード」テキストボックスコントロールをWhere条件として参照するようにします。
![レコードソースのクエリ](images/tips_330c.gif)
- パラメータ入力用のフォームで[OK]ボタンがクリックされたときのイベントプロシージャを次のようにします。ここではフォームの内容をクエリが参照するため、フォームを閉じるのではなく、非表示の状態にします(実際に閉じるのはレポートモジュール側で行います)。
Private Sub cmdOK_Click()
'[OK]ボタンクリック時
'このフォームを非表示にする
Me.Visible = False
End Sub
- 最後に次のようなイベントプロシージャをレポートモジュールに記述します。
Private Sub Report_Open(Cancel As Integer)
'レポートを開くとき
'パラメータ入力ダイアログを開く
DoCmd.OpenForm "fdlg受注印刷", , , , , acDialog
End Sub
Private Sub Report_Close()
'レポートを閉じるとき
'パラメータ入力ダイアログを閉じる
DoCmd.Close acForm, "fdlg受注印刷"
End Sub
実行例:
- データベースウィンドウからレポートを開くと......
![データベースウィンドウからレポートを開くとこのダイアログが表示される](images/tips_330d.gif)
- そしてそのフォームで[OK]ボタンを押すと......
|