このエントリーをはてなブックマークに追加

オプショングループで、パターンの違うレポートを表示する。

こちらは、日本を10の地域に分類し、各地域の人口を載せた一覧表と、さらに各地域の都道府県のデータを一覧にした、サンプルレポートです。この2つの一覧表は、1つのレポートから作られており、レポートの「読み込み時」イベントにコードを書くことで、表示するパターンを変えています。

レポート

こちらが、都道府県別の県庁所在地や人口などを載せた、一覧となっています。(これは、全10ページある中の、7ページ目です。)

レポート

こちらが、そのコードです。

Option Compare Database
Option Explicit
Dim aFrame As Integer

Private Sub Report_Load()
aFrame = Forms!F_main!フレーム1.Value

Select Case aFrame
Case 1
    Me.lbl_標題.Caption = "日本の地域一覧"
    Me.地域IDヘッダー.ForceNewPage = 0
    Me.地域IDヘッダー.Height = 283
    Me.lbl_都道府県.Visible = False
    Me.lbl_県庁所在地.Visible = False
    Me.lbl_人口.Visible = False
    Me.lbl_県花.Visible = False
    Me.詳細.Visible = False
    Me.lbl_合計.Visible = False
    
Case 2
    Me.lbl_地域人口.Visible = False
    Me.地域IDヘッダー.ForceNewPage = 1
    Me.直線2.Visible = False
    Me.レポートフッター.Visible = False
End Select

End Sub

 

では、そのコードの記述を見ていきますが、その前に、その表示の切り替えをするために、フォームにオプションボタン2つ用意します。こちらは、フォームのデザインビューで、このオプションボタンは、オプショングループウィザードで、オプショングループとして作っていくようにします。

フォームデザイン

こちらが、フォームビューで開いたところです。「地域一覧」「都道府県」どちらかのオプションボタンを選択して、「一覧表示」ボタンをクリックすると、レポートを印刷プレビューで表示するようにしています。

フォーム

レポートの各コントロールの配置など、このような感じに作っています。

  1. 「ページヘッダー」セクションに「都道府県一覧」というタイトルのラベルと「人口(人)」のラベルを配置しています。
  2. 「地域ID」フィールドをグループ化して、「地域IDヘッダー」と「地域IDフッター」を表示させています。
  3. 「地域IDヘッダー」セクションに「地域ID」「地域名」テキストボックスと、「都道府県」「県庁所在地」「人口(人)」「県花」というラベルを配置しています。
  4. 「詳細」セクションに「都道府県」「県庁所在地」「県人口」「県花」のテキストボックスと、その下部に引く「直線1」を配置しています。
  5. 「地域IDフッター」セクションに「合計」ラベルと、「地域別人口合計」のテキストボックスと、その下部に引く「直線2」を配置しています。
  6. 「ページフッター」セクションにページを表示するラベルとテキストボックスを配置しています。
  7. 「レポートフッター」セクションに「全国人口」ラベルと、「全国の人口合計」のテキストボックスを配置しています。

レポートデザイン

47都道府県の一覧が載ったレポートのほうは、地域ごとに順に表示されているのですが、これを、1ページに1地域だけを載せるようにします。レポートの「読み込み時」イベント(Report.Loadイベント)に「Section.ForceNewPage」プロパティの値を「1」に指定して、「地域IDヘッダー」セクションの前に改ページがなされるようにします。

Private Sub Report_Load()
Me.地域IDヘッダー.ForceNewPage = 1
End Sub

 

次に、オプションボタンの選択によって、レポートの表示パターンを変えるための条件分岐を「Select Case」ステートメントで記述します。

  1. オプショングループの値を格納する変数「aFrame」の宣言をします。
  2. 「読み込み時」イベントで、オプショングループの値を変数「aFrame」に入れます。「Forms!F_main!フレーム1」がオプショングループの名前です。
  3. オプショングループ内のオプションボタンを選択すると、そのボタンのオプション値がオプショングループのオプション値に格納されます。
Option Compare Database
Option Explicit
Dim aFrame As Integer

Private Sub Report_Load()
aFrame = Forms!F_main!フレーム1.Value
End Sub

続けて、Select Caseステートメントを書きます。Case 1 の「1」とCase 2 の「2」は、フォームに設置した、オプションボタンの「オプション値」です。「地域一覧」オプションボタンのオプション値に「1」、「都道府県」オプションボタンのオプション値に「2」を設定しています。

  1. Case1のとき、タイトルのラベルを「日本の地域一覧」と表示させます。
  2. Case1のとき、地域のみの一覧を表示させるので、「ForceNewPage = 0」で、改ページはしないようにします。
  3. Case1のとき、「地域IDヘッダー」セクションの高さを細くするため、「Heightプロパティ」を「283」(単位twips)にします。
  4. Case1のとき、都道府県データのある「詳細」セクションは表示しないので、「Visible = False」に設定します。
  5. Case 2のとき、地域と都道府県データの両方を表示させ、1ページに1地域のみを表示させるので、「ForceNewPage =1」で、改ページをいれます。
  6. Case 2のとき、全国人口を表示するレポートフッターは、表示しないようにしています。
Select Case aFrame
Case 1
  Me.lbl_標題.Caption = "日本の地域一覧"
 Me.地域IDヘッダー.ForceNewPage = 0
 Me.地域IDヘッダー.Height = 283
 Me.詳細.Visible = False
Case 2
 Me.地域IDヘッダー.ForceNewPage = 1
 Me.レポートフッター.Visible = False
End Select

 

あとは、Case1とCase2のときで、ラベルと直線の非表示を設定します。Case1とCase2の部分にコードを追加します。「Me.lbl_地域人口」は、ページヘッダーにある「人口(人)」ラベルです。

Select Case aFrame
Case 1
    Me.lbl_都道府県.Visible = False
    Me.lbl_県庁所在地.Visible = False
    Me.lbl_人口.Visible = False
    Me.lbl_県花.Visible = False
    Me.lbl_合計.Visible = False
    
Case 2
    Me.lbl_地域人口.Visible = False
    Me.直線2.Visible = False
End Select

補足

VBAで、ヘッダーセクションなどの高さを指定するときは、「Height」プロパティを使いますが、その時の単位に既定の「twips」を使っています。1440twipsが、1インチです。今回は、「地域IDヘッダー」の高さを「0.5cm」にしたかったので、「283twips」(1440÷2.54×0.5=283.46..)に設定しています。

このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントフィード

トラックバックURL : http://gyoumuka.work/wp-trackback.php?p=2393

PAGE TOPへ戻る