• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Acccess レポートをグループ別に出力する)

Accessレポートをグループ別に出力する方法とエラーの対処法

このQ&Aのポイント
  • Accessのクエリ「納品書」を元にしたレポート「納品書」をグループ別に出力する方法について教えてください。
  • VBA実行時に「パラメータが少な過ぎます。7を指定して下さい。」というエラーが出る問題についても解決方法を教えてください。
  • 他のサイトで見つけた回答を参考にコードを作成しましたが、正しく動作しない場合はどこが間違っているのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

どの程度改善できるかは不明です。単なる思いつきなので試していません。 フォームを一つ作成します。仮に名前を「F_PDF出力」にします。 F_PDF出力のレコードソースを、SELECT DISTINCT 顧客番号 FROM 納品書 にします。 レコードセットはスナップショットにします。 フォーム上に顧客番号のテキストコントロールを置きます。 もう一つ非連結のテキストボックスを置き、コントロールソースには =[CurrentRecord] & " / " & Count(*) とします。 上はどこまで進んでいるか確認するためです。 あとは、コマンドボタンを一個。 レポートのレコードソースをパラメータークエリにして 上記フォームの顧客番号を参照するようにします。 コマンドボタンのクリック時イベントなどに Const TBL_NAME = "納品書" Const RPT_NAME = "納品書"  Const PDF_PATH = "C:\Users\Desktop\ Docmd.GoToRecord acDataForm,me.name,acFirst   Do DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & Format(date,"yyyymmdd") & ".pdf"     If Me.Recordset.RecordCount = Me.CurrentRecord Then       MsgBox "最終レコードまで出力しました。"     Exit Sub     End If     Docmd.GoToRecord acDataForm,me.name,acNext   Loop とします。 これで上手く行けばプレビューにかかる時間が短縮できるはずです。

semi076
質問者

お礼

どうもありがとうございます! いただいた回答で作成したところ、大幅に処理時間が短縮されました。 本当に助かりました。 ありがとうございました。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

どの行でエラーになって止まっていますか? rs!顧客番号 のデータ型かも。

semi076
質問者

補足

ありがとうございます。 ご指摘の箇所のデータ型の不一致でエラーでした。 データ型を数値で合わせたところ、無事動作しました。 しかし、さらに、 顧客番号が100件程あり、 顧客番号件数分レポートの実行、出力を繰り返す為 膨大な処理時間がかかってしまうことに気がつきました・・・。 一度の質問で重ねてお尋ねして申し訳ございませんが、 いちいちレポートを実行せず、1度のレポートを開いた後、 顧客番号ごとにファイルを分けていく方法はないでしょうか?