アプリ版:「スタンプのみでお礼する」機能のリリースについて

クエリ「納品書」を元にしたレポート「納品書」(※'クエリ名とレポート名は同名)は
フィールド「顧客番号」(テキスト型)でグループ設定をしています。

レポートをPDF出力する際、グループごとにファイルを保存したいと思います。
しかし、VBA実行時に「パラメータが少な過ぎます。7を指定して下さい。」と
エラーが出てしまい、行き詰まっています。
VBAの知識もほとんど無い為、どこで躓いているか教えていただけないでしょうか。

また、
他サイトで申し訳ありませんが・・・、
●ACCESSVBA レポートをグループ毎に別のPDFファイルとして保存
http://detail.chiebukuro.yahoo.co.jp/qa/question …
こちらの回答を参考に、以下のように作成しました。
(以下、レコードソース)
---------------------------
Const TBL_NAME = "納品書"
Const RPT_NAME = "納品書" 
Const PDF_PATH = "C:\Users\Desktop\

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

rs.Open "SELECT DISTINCT 顧客番号 FROM 納品書", CurrentProject.Connection, adOpenStatic, adLockReadOnly
Do Until rs.EOF

pdfName = rs!顧客番号
DoCmd.OpenReport RPT_NAME, acViewPreview, ,"顧客番号=" & rs!顧客番号, acWindowNormal
DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & Format(date,"yyyymmdd") & ".pdf"
DoCmd.Close
rs.MoveNext

Loop
---------------------------

A 回答 (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
とします。
これで上手く行けばプレビューにかかる時間が短縮できるはずです。
    • good
    • 2
この回答へのお礼

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

本当に助かりました。
ありがとうございました。

お礼日時:2013/08/28 08:22

どの行でエラーになって止まっていますか?


rs!顧客番号 のデータ型かも。

この回答への補足

ありがとうございます。
ご指摘の箇所のデータ型の不一致でエラーでした。
データ型を数値で合わせたところ、無事動作しました。

しかし、さらに、
顧客番号が100件程あり、
顧客番号件数分レポートの実行、出力を繰り返す為
膨大な処理時間がかかってしまうことに気がつきました・・・。

一度の質問で重ねてお尋ねして申し訳ございませんが、
いちいちレポートを実行せず、1度のレポートを開いた後、
顧客番号ごとにファイルを分けていく方法はないでしょうか?

補足日時:2013/08/21 20:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A