MS Access

Accessでレポートのレコードソースを動的にセットしたい

投稿日:2013年5月2日 更新日:

今までは、フォーム上のボタンをクリックしたら、レポートをデザインで開いてからレコードソースをセットしなければならないと思っていた。
つまり、こんなやり方をやっていた。

フォーム:

 【ボタン1をクリック時】
DoCmd.OpenReport "新規顧客はがき", acDesign
Reports("新規顧客はがき").RecordSource = "新規顧客はがき用1"
DoCmd.OpenReport "新規顧客はがき", acPreview

【ボタン2をクリック時】
DoCmd.OpenReport "新規顧客はがき", acDesign
Reports("新規顧客はがき").RecordSource = "新規顧客はがき用2"
DoCmd.OpenReport "新規顧客はがき", acPreview

しかし、このやり方だと、共有でフォームを開くときにうまくいかないことがわかった。
そこで、フォームからレポートに引数を渡し、レポート側でも処理を分岐することにした。
これだとうまくいった。

フォーム:

【ボタン1をクリック時】
DoCmd.OpenReport "新規顧客はがき", acPreview, , , , "1"

【ボタン2をクリック時】
DoCmd.OpenReport "新規顧客はがき", acPreview, , , , "2"

レポート:

Select Case Me.OpenArgs
Case "1"
Reports("新規顧客はがき").RecordSource = "新規顧客はがき用1"
Case "2"
Reports("新規顧客はがき").RecordSource = "新規顧客はがき用2"
Case Else
MsgBox "データセット名にエラーがあります。"
Exit Sub
End Select

実際にコードを修正すると、レポートを開くスピードが劇的に速くなった。
共有でも安心。

-MS Access

執筆者:

関連記事

Accessのオブジェクトをデスクトップに作っておくと超便利

結構、知らない人が多いんじゃないかな。 クエリとか、フォームへの直接のリンクを、PCのデスクトップに作れること。 ユーザーがたくさんいて、その中の一部の人には、閲覧はして欲しいけど、編集はして欲しくな …

no image

Accessで指定テーブル内を全文検索

今まで、特定のフィールド内でしか検索できないものだと思っていた・・・。 Accessのリボンの検索ボタンをクリックして表示されるダイアログボックス内の「探す場所」で特定のテーブル/クエリ/フォーム名か …

no image

ExcelからAccessの外部データの取り込みでトラブル

ExcelからAccessのクエリを使いたいとき、データ接続途中の「テーブルの選択」ウィンドウに、使いたいクエリが表示されない。 ウィンドウ内には、Accessにあるはずのクエリがあったりなかったり。 …

no image

Accessで1件ずつレコードを読んでスナップショットファイルを作ってメール送信する処理

作るのにWebに情報が無くてすごく苦労したので備忘録。 私にしかわからないかもしれないけど、見た人も何か参考になるかもしれないから、公開しよっと。 ■事前準備 1.処理を起動するフォームにボタン「調査 …

no image

AccessからMySQLを操作

WordPressに書いた記事は、MySQLに格納されている。 格納された大量の記事をまとめて修正したいときは、いちいち管理画面から修正するのは疲れる。 今までは、PhpMyAdminでSQLのUPD …