- ベストアンサー
Accessレポートをグループ別に出力する方法とエラーの対処法
- Accessのクエリ「納品書」を元にしたレポート「納品書」をグループ別に出力する方法について教えてください。
- VBA実行時に「パラメータが少な過ぎます。7を指定して下さい。」というエラーが出る問題についても解決方法を教えてください。
- 他のサイトで見つけた回答を参考にコードを作成しましたが、正しく動作しない場合はどこが間違っているのか教えてください。
- みんなの回答 (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 とします。 これで上手く行けばプレビューにかかる時間が短縮できるはずです。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
どの行でエラーになって止まっていますか? rs!顧客番号 のデータ型かも。
補足
ありがとうございます。 ご指摘の箇所のデータ型の不一致でエラーでした。 データ型を数値で合わせたところ、無事動作しました。 しかし、さらに、 顧客番号が100件程あり、 顧客番号件数分レポートの実行、出力を繰り返す為 膨大な処理時間がかかってしまうことに気がつきました・・・。 一度の質問で重ねてお尋ねして申し訳ございませんが、 いちいちレポートを実行せず、1度のレポートを開いた後、 顧客番号ごとにファイルを分けていく方法はないでしょうか?
お礼
どうもありがとうございます! いただいた回答で作成したところ、大幅に処理時間が短縮されました。 本当に助かりました。 ありがとうございました。