MS-Access【アクセス】・VBA・レポートのデータソースを動的に変更する方法!

スポンサーリンク
050-VBA

へっぽこヘタレシステム管理者の管理人です。

さて、非課税世帯等に対する臨時特別給付金(非課税世帯の10万円)が年末に決まり・・・

管理人が勤務するお役所でも1月末~2月初旬までには・・・

対象世帯に確認書を送付する予定らしい?・・・のですが・・・

令和2年度の特別低額給付金と同じく・・・

システムの導入が間に合いません。

とういことで、またしてもデータ抽出・確認書の印刷・振込ができるシステムを内製する必要が出てきたのですが・・・

面倒くさいったらありゃしません。

とりあえず、アクセスを使って、住基情報(Oracle)からデータをひっぱりだして、カリカリする訳ですが・・・

今回は、同じ確認書でも条件が異なる世帯が次のとおりイロイロと存在しますので・・・

  • 確実に支給対象な世帯
  • 無申告者がいて支給対象となるか不明な世帯
  • 別の市区町村の方に扶養に取られている世帯
  • 1月2日以降に転入してきて住民税の課税状況が分からない世帯

これらが選別できるように分ける必要があるわけですよ・・・

ということで、アクセスの同じレポートで動的にデータソースを変更する方法を防備録として掲載しておきます。

まず、適当にレポートにセットするデータ(テーブル)を2つ作ります。

スポンサーリンク

フォームにレポートを開くボタンを設置し・・・

レポートを開いたときに引数を渡すようにします。

Private Sub コマンド1_Click()

    DoCmd.OpenReport "report1", acPreview, , , , "1"
    
End Sub

Private Sub コマンド2_Click()

    DoCmd.OpenReport "report1", acPreview, , , , "2"

End Sub

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

上のコードの例では・・・

コマンドボタン1では【引数1】をコマンドボタン2では【引数2】をレポートに渡します。

次にレポートを開いたときに渡された引数に応じて、データソースを動的に変更します。

Private Sub Report_Open(Cancel As Integer)

 Select Case Me.OpenArgs
  Case "1"
   Reports("report1").RecordSource = "table1"
  Case "2"
   Reports("report1").RecordSource = "table2"
  Case Else
   MsgBox "データセット名にエラーがあります。"
   Exit Sub
 End Select

End Sub

上の例では【引数1】の時は【データソースを(table1)】に 【引数2】の時は【データソースを(table2)】にしています。

これで、動的にレポートのデータソースを変更できます。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

コメント

タイトルとURLをコピーしました