一般的に、Accessのフォームの中にレポート(プレビュー状態のもの)を表示させることは面倒なプログラムを使わないと実現できません。サブフォームのようにしてレポートオブジェクトをフォームのデザイン上に挿入することもできません。
しかし、レポートの印刷内容を外部のファイルとして保存したスナップショット形式のファイル(拡張子.snp)と、それを見るための「Snapshot Viewer Control」を利用することで、フォーム内にレポートを表示させることができます。
ここでは、次のような流れを例としてそのようなフォームを作ってみます。
- フォーム上のボタンをクリックすることで、特定のレポートを.snpファイルにエクスポートする
- Snapshot Viewer Controlのソースとしてそのファイルを動的に指定することで、その内容をフォームに表示する
それでは実際にフォームを作ってみましょう。
- 空のフォームを用意します
- リボンの[デザイン]タブより[ActiveX コントロール]をクリックします
![[ActiveX コントロール]をクリック](images/tips_536a.png)
- ActiveX コントロールの一覧が表示されたら、その中から「Snapshot Viewer Control」を選択して[OK]ボタンをクリックします。



- 挿入されたコントロールの位置やサイズを整えます。

- 次に、処理を実行するためのコマンドボタンコントロールを適当な位置とサイズで配置します。

なおここでは、コマンドボタンの名前プロパティは「cmdレポート表示」、Snapshot Viewer Controlはデフォルトの「SnapshotViewer0」とします。
- コマンドボタンのクリック時イベントプロシージャに次のようなプログラムを記述します。
Private Sub cmdレポート表示_Click()
'[レポート表示]ボタンクリック時
Dim strSNPPAth As String
'出力先のフルパスを設定(データベースと同じフォルダを指定)
strSNPPAth = CurrentProject.Path & "\" & "rpt得意先.snp"
'「rpt得意先」レポートを.snpに出力する
DoCmd.OutputTo acOutputReport, "rpt得意先", acFormatSNP, strSNPPAth
'出力されたファイルをSnapshot Viewer Controlに指定
Me.SnapshotViewer0.SnapshotPath = strSNPPAth
End Sub
実行例:
クリック前の状態

クリック直後(レポートが.snpに出力されるところ)

レポート表示後

レポートは表示サイズを変えることも可能

- レポート表示時には、コントロール下部のレコード移動ボタンでページを移動したり印刷を実行したりすることもできます。

- Snapshot Viewer Controlのプロパティの設定画面(コントロールの右クリックのメニューから表示される画面)によって、初期表示時のレポートのサイズや移動ボタンの有無なども設定することができます。
|