dポイントプレゼントキャンペーン実施中!

下記のプログラムはテーブル「IY_Zaiko_T」のフィールド「TORNM」毎にレポートをPDFに出力しています。やりたいことは別フィールド「TOKCD」(文字タイプ)の一つのレコードだけを出力したいのです。OpenReportのフィルター”"TORNM = '" & rs("TORNM") & "'"” の後に条件を入れれば良いのかと思いますがどうしたら良いか解りません御教授をお願いします。

Private Sub 在庫表出力_Click()
Const TBL_NAME = "IY_Zaiko_T"
Const RPT_NAME = "Kigen_risuto"
Const PDF_PATH = "D:\SPD\"

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

rs.Open "SELECT DISTINCT TORNM FROM IY_Zaiko_T", CurrentProject.Connection, adOpenStatic, adLockReadOnly
Do Until rs.EOF

pdfName = rs!TORNM
DoCmd.OpenReport RPT_NAME, acViewPreview, , "TORNM = '" & rs("TORNM") & "'"
DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & pdfName & "_" & Format(Date, "yyyymmdd") & ".pdf"
DoCmd.Close
rs.MoveNext

Loop
End Sub

宜しくお願いします。

質問者からの補足コメント

  • > rs.Open "SELECT DISTINCT TORNM,TOKCD FROM IY_Zaiko_T", CurrentProject.Connection, adOpenStatic, adLockReadOnly

    > DoCmd.OpenReport RPT_NAME, acViewPreview, , "TORNM = '" & rs("TORNM") & "'" And "TOKCD = '" & rs("TOKCD") & "'"

    で実行したところ”型が一致しません”とエラー表示になります。何がおかしいのでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/07/12 08:56

A 回答 (3件)

IY_Zaiko_TにTOKCDがあるならrsを


SELECT DISTINCT TORNM, TOKCD FROM IY_Zaiko_T
でレポートのフィルタでrs("TORNM")とrs("TOKCD")を条件にすれば絞り込めるのでは?
あとpdfが同じファイル名になるのでファイル名にTOKCDを入れるなどの工夫が必要。
この回答への補足あり
    • good
    • 0

テキスト型の場合


TOKCD = '0001'
数値型の場合
TOKCD = 1
日付型の場合
TOKCD = #2016/07/12#
となるので
TOKCDが数値型などの場合は「'」はいりません。
    • good
    • 0
この回答へのお礼

有難う御座います。
解決しそうです。条件の所で
>"TORNM = '" & rs("TORNM") & "'" And "TOKCD = '" & rs("TOKCD") & "'"
Andからの文の位置が間違っていたようです。条件が閉じられているのに追加条件をいれていてエラーになったようです。
有難う御座います。

お礼日時:2016/07/12 10:36

>別フィールド「TOKCD」(文字タイプ)の一つのレコードだけを出力したいのです。


抽出条件を変えるのではなく、レポート上に出力するフィールドを増やしたいなら、
RPT_NAME レポート自体を編集して、フィールドを付け加えてください。
印刷に関するコーディングは変更する必要はありません。

なんか、二重にテーブル開いているところが、少し気になるけど、、、
レポートのレコードソースをクエリにして、対象レコードを絞るようにすると、
すっきりするかも。
    • good
    • 0

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