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

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

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

no image

AccessやExcelで作ったハイパーリンクではChromeブラウザ上のGmailの受信トレイを検索できんかった・・・がShellならできた

Accessのフォームにつくったボタンをクリックしたら、ハイパーリンクに変数がセットされ、その変数でGmailの受信トレイを検索する・・・・といった仕組みを作りたかった。 Private Sub cm …

Access「実行時エラー3061 パラメータが少なすぎます。2を指定してください」で意外な決着

クロス集計クエリをVBAで読むときで、かつパラメータクエリを使う場合には、クエリのパラメータパネルで、別途、パラメータを指定しなくてはならない(VBAで使わないなら不要) 本日のトラブルは、その後、W …

no image

AccessでコンボボックスのリストをVBAで行番号で選択する

こんな方法があるのは知らなかった。 メモメモ。 ‘コンボボックスの1行目を選択する ‘Forms!見積請求書F.cbo銀行振込先 = Forms!見積請求書F.cbo銀行振込先.ItemData(0) …

no image

AccessでIN演算子をクエリの抽出条件に使うのに苦労

やりたいこと: 非連結のチェックボックスでレコードを選択する – hatena chips ・・・のようなこと。 ・フォームのテキストボックスに、’354942-0007474 …