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