今までは、フォーム上のボタンをクリックしたら、レポートをデザインで開いてからレコードソースをセットしなければならないと思っていた。
つまり、こんなやり方をやっていた。
フォーム:
【ボタン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
実際にコードを修正すると、レポートを開くスピードが劇的に速くなった。
共有でも安心。