オプショングループで人口規模別に表示を切り替える。
こちらは、Accessのフォームに、人口の規模を4つに分類してラベルに表示し、それぞれにオプションボタンを設置しています。4つのオプションボタンのうちいずれかを選択して、「都道府県表示」ボタンを押すと、指定された人口規模の都道府県を抽出して、レポートに表示させるようにします。
「人口500万人以上」のオプションボタンをオンにして、「都道府県表示」ボタンを押すと、このようなレポートが表示されます。
このように、どれかひとつのオプションボタンを選択できるようにするには、これらのオプションボタンをひとつのオプショングループの中に入れる必要があります。こちらのオプショングループの作成のページでウィザードを使った作成方法を載せています。
では、「都道府県表示」(ボタン1)のクリック時イベントにコードを書きます。それぞれのオプションボタンをオンにすると、そのオンにされたオプションボタンのオプション値が、オプショングループ(フレーム1)のValueプロパティに格納されます。4つのオプション値をSelect~Caseステートメントで、それぞれの人口規模で条件分岐します。そして、レポートを印刷プレビューモードで開きます。
Private Sub ボタン1_Click()
Select Case Me.フレーム1.Value
Case 1
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 >= 5000000"
Case 2
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 >= 2000000 and 県人口 < 5000000"
Case 3
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 >= 1000000 and 県人口 < 2000000"
Case 4
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 < 1000000"
Case Else
DoCmd.OpenReport "R_都道府県", acViewPreview
End Select
End Sub
ここまでで、人口規模で分類した都道府県データが表示されますが、さらに、フッター部分に表示されている都道府県の件数を表示させるようにしていきます。
まずは、標準モジュールに4つのパブリック変数を宣言します。この4つの変数は、「都」「道」「府」「県」それぞれの件数を格納するための変数とします。
Option Compare Database
Option Explicit
Public tokyo As Integer
Public hokkai As Integer
Public fu As Integer
Public ken As Integer
そして、「都道府県表示」ボタンクリック時イベントに、それぞれの件数をDCount関数でカウントした数を変数に入れるコードを追加します。人口規模が500万人以上の「Case1」は、このようになります。
Private Sub ボタン1_Click()
Select Case Me.フレーム1.Value
Case 1
tokyo = DCount("都道府県", "T_都道府県", "県人口 >= 5000000 and 都道府県 = '東京都'")
hokkai = DCount("都道府県", "T_都道府県", "県人口 >= 5000000 and 都道府県 = '北海道'")
fu = DCount("都道府県", "T_都道府県", "県人口 >= 5000000 And 都道府県 like '*府'")
ken = DCount("都道府県", "T_都道府県", "県人口 >= 5000000 And 都道府県 like '*県'")
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 >= 5000000"
「Case2」以降のコードも人口の抽出条件を変えて、記述していきます。最後に、何も選択されなかったときは、「Case Else」で、抽出条件は指定せず、全ての都道府県を表示させるようにしています。
Case 2
tokyo = DCount("都道府県", "T_都道府県", "県人口 >= 2000000 and 県人口 < 5000000 and 都道府県 = '東京都'")
hokkai = DCount("都道府県", "T_都道府県", "県人口 >= 2000000 and 県人口 < 5000000 and 都道府県 = '北海道'")
fu = DCount("都道府県", "T_都道府県", "県人口 >= 2000000 and 県人口 < 5000000 And 都道府県 like '*府'")
ken = DCount("都道府県", "T_都道府県", "県人口 >= 2000000 and 県人口 < 5000000 And 都道府県 like '*県'")
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 >= 2000000 and 県人口 < 5000000"
Case 3
tokyo = DCount("都道府県", "T_都道府県", "県人口 >= 1000000 and 県人口 < 2000000 and 都道府県 = '東京都'")
hokkai = DCount("都道府県", "T_都道府県", "県人口 >= 1000000 and 県人口 < 2000000 and 都道府県 = '北海道'")
fu = DCount("都道府県", "T_都道府県", "県人口 >= 1000000 and 県人口 < 2000000 And 都道府県 like '*府'")
ken = DCount("都道府県", "T_都道府県", "県人口 >= 1000000 and 県人口 < 2000000 And 都道府県 like '*県'")
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 >= 1000000 and 県人口 < 2000000"
Case 4
tokyo = DCount("都道府県", "T_都道府県", "県人口 < 1000000 and 都道府県 = '東京都'")
hokkai = DCount("都道府県", "T_都道府県", "県人口 < 1000000 and 都道府県 = '北海道'")
fu = DCount("都道府県", "T_都道府県", "県人口 < 1000000 And 都道府県 like '*府'")
ken = DCount("都道府県", "T_都道府県", "県人口 < 1000000 And 都道府県 like '*県'")
DoCmd.OpenReport "R_都道府県", acViewPreview, , "県人口 < 1000000"
Case Else
tokyo = DCount("都道府県", "T_都道府県", "都道府県 = '東京都'")
hokkai = DCount("都道府県", "T_都道府県", "都道府県 = '北海道'")
fu = DCount("都道府県", "T_都道府県", "都道府県 like '*府'")
ken = DCount("都道府県", "T_都道府県", "都道府県 like '*県'")
DoCmd.OpenReport "R_都道府県", acViewPreview
End Select
End Sub
では、レポートのフッターセクションに非連結のテキストボックスを4つ設置します。
レポートフッターのフォーマット時イベントにコードを書きます。表示されている都道府県の件数に「都」や「道」などの文字列を連結させて、テキストボックスに表示させます。
Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)
Me.テキスト7 = tokyo & "都"
Me.テキスト8 = hokkai & "道"
Me.テキスト9 = fu & "府"
Me.テキスト10 = ken & "県"
End Sub
件数が「0」の時は、「Visible = False」で、非表示にしておきますので、コードを追加します。
If tokyo = 0 Then
Me.テキスト7.Visible = False
End If
If hokkai = 0 Then
Me.テキスト8.Visible = False
End If
If fu = 0 Then
Me.テキスト9.Visible = False
End If
If ken = 0 Then
Me.テキスト10.Visible = False
End If
人口200万人以上500万人未満の都道府県一覧はこのようになります。
コメントフィード
トラックバックURL : http://gyoumuka.work/wp-trackback.php?p=2825