#439 フォーム内にレポートをプレビュー表示するには? フォーム、API

フォームを表示したとき、その内部にレポートのプレビューウィンドウをコントロールのように表示させる方法です。
ここではその基本的な方法について簡単に説明します。そのため、レポートのズームやフォーム内でのスクロールは利きません。

  1. まず、フォーム内に表示するレポートを作成します。ふつうのレポートデザインでかまいませんが、フォーム内にコントロールのように表示させるため、「境界線スタイル」プロパティを”なし”に設定します。

    レポートのデザイン:
    レポートのデザインビュー
    プレビューしたときの状態:
    プレビューしたときの状態

  2. 次に適当なフォームを作ります。レポートの表示サイズに合わせて、フォームの大きさを設定しておきます。ただしこの時点ではまだレポートの大きさが分かりませんので、適当に作っておいて、あとで調整を加えます。
    フォームのデザインビュー

  3. 次に、次のようなVBAのコードをフォームのモジュール上に記述します。
    Windows APIの「SetParent」関数は、ウィンドウの親子関係を設定するための関数で、これを使ってレポート(rpt仕入先)のプレビューウィンドウをフォームの子ウィンドウにすることで、フォーム内レポート表示を実現しています。

    Private Declare Function SetParent Lib "user32" ( _
              ByVal hWndChild As Long, _
              ByVal hWndNewParent As Long) As Long

    Private Sub Form_Load()
    'フォーム読み込み時

      'レポートをプレビューで開く
      DoCmd.OpenReport "rpt仕入先", acViewPreview

      'レポートの位置とサイズをフォームに合わせて調整
      '(フォームに対する相対位置を設定)
      DoCmd.MoveSize 200, 200, 12000, 8000

      'レポートの親ウィンドウをフォームに設定
      SetParent Reports!rpt仕入先.hwnd, Me.hwnd

    End Sub


実行結果:
実行結果
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved