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

執筆者:

関連記事

no image

フォーム テンプレート

Accessのフォームを作るときに、「フォーム テンプレート」を使う方法があること、知っている人は多いのかな? 既存のフォームにあるテキストボックスの色やサイズなどの設定(プロパティ)を引き継いで、新 …

Accessのフォームをデザインしようとすると固まる

タイミングとしては、フォームをデザインビューにした直後、プロパティシートをクリックしたとき。それだけで数十秒待たされる。 原因は、なんとなく、気が付いている。 ついさっき、フォームで使っているクエリに …

no image

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

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

no image

客先で動かしているAccessとFAXの連携システムが昨日から止まっている

これまでのWindowsXP+OutlookExpressであれば問題なかった。 しかし、OSはWindows7になってしまい、メールはWindowsLiveメールになってしまった。 そしてWindo …

no image

SqlServer 2008 Express R2 をインストールしようとしているのだが、最後の最後でうまくいかない

前回、試しに自分の普段のPCでSqlServer2008をインストールしたのだが、今回はサーバ(といってもXP)を対象に同様のことをしてみた。 しかしインストールの最後で「there was an e …