3

私の質問は、Access レポートを PDF ファイルに出力する必要があるコードに関するものです。グループごとに個別の PDF が必要です。これにより、各グループの売上と売上のみを送信できるようになります。レポートには、販売された各アイテムと販売の詳細が出力されます。私のコードは機能しますが、10 回目のグループ化の後、停止し、エラー コード 3048: これ以上データベースを開くことができません。アクセスには 2048 参照の制限があることを別のスレッドで読みましたが、私のデータセットは実際にはそれほど大きくありません。私のコードは次のとおりです (レポート名 REPORT とグループ識別子 GROUP にラベルを付けました。私の QUERY は 2 つのテーブルからプルします)。

Private Sub Report_Click()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MyFileName As String
    Dim mypath As String
    Dim temp As String


    mypath = "PATH\Access PDF Testing\"

    Set db = CurrentDb()

    Set rs = db.OpenRecordset("SELECT [GROUP] FROM [QUERY]", dbOpenSnapshot)

    Do While Not rs.EOF

        temp = rs("GROUP")
        MyFileName = rs("GROUP") & ".PDF"

        DoCmd.OpenReport "REPORT", acViewReport, , "[GROUP]='" & temp & "'"
        DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
        DoCmd.Close acReport, "REPORT"
        DoEvents

        rs.MoveNext
    Loop


    rs.Close
    Set rs = Nothing
    Set db = Nothing

End Sub

動作しますが、10 グループを PDF に出力すると失敗します。名前に特殊文字を含まないグループのみを実行してみました。強制改ページが判明しましたが、10 番目のグループ レコードを超えるものはありません。各グループには、およそ 10 ~ 20 行が含まれます。私が別の方法でできることについて、誰かが提供できる洞察はありますか?

4

1 に答える 1

0

「各グループには約10〜20行あります」とあなたは言います。ただし、OpenRecordset には句がありませんdistinct。つまり、REPORT からすべてのレコードを取得します。おそらく、実際には各レポートのエクスポートを 1 回だけでなく 10 ~ 20 回開いているのではないでしょうか?

試す:

Set rs = db.OpenRecordset("SELECT distinct [GROUP] FROM [REPORT]", dbOpenSnapshot)

(これが私が思うように機能する場合、その2048制限の下に戻され、はるかに高速に実行されます。しかし、各レポートを正しく閉じているため、その制限が問題でさえある理由をまだ説明していません作ってから)

于 2013-05-28T21:35:09.857 に答える