hiroton
2022/01/31 (月) 14:13:20
53823@f966d
この掲示板でコードを表記する場合はコードブロックの記述を使うとわかりやすくなります
strWhere = "([請求締日]='" & Me![締日] & "')" & _
" AND ([請求先カナ] BETWEEN '" & Me![開始請求先] & "' AND '" & Me![終了請求先] & "')" & _
" AND ([施工者コード] BETWEEN '" & Me![開始施工者] & "' AND '" & Me![終了施工者] & "')" & _
" AND ([工事コード] BETWEEN '" & Me![開始工事] & "' AND '" & Me![終了工事] & "')" & _
" AND ([試験工場コード] BETWEEN '" & Me![開始試験] & "' AND '" & Me![終了試験] & "')"
If in_kbn = "w" Then
If PrinterGRP.Value = 1 Then
DoCmd.OpenReport "R_請求書10", , , strWhere
'//R_請求書10を印刷したときならここ
ElseIf PrinterGRP.Value = 2 Then
'//R_請求書控を印刷したときならここ
DoCmd.OpenReport "R_請求書控", , , strWhere
End If
'//どちらでもいいので印刷したときならここ
Else
If PrinterGRP.Value = 1 Then
DoCmd.OpenReport "R_請求書10", acPreview, , strWhere 'プレビュー
ElseIf PrinterGRP.Value = 2 Then
DoCmd.OpenReport "R_請求書控", acPreview, , strWhere
End If
End If
また、コードの書き方を工夫すると理解しやすくなります
strwhere = "(省略)"
'//印刷・プレビューに使うレポートを決める
Dim reportName As String
Select Case PrinterGRP.Value
Case 1
reportName = "R_請求書10"
Case 2
reportName = "R_請求書控"
End Select
'//印刷またはプレビューを行う
If in_kbn = "w" Then
DoCmd.OpenReport reportName, , , strwhere
'//印刷したときだけCSV出力をするならここにコードを追加する
Else
DoCmd.OpenReport reportName, acPreview, , strwhere 'プレビュー
End If
CSV出力の方法はいくつかあります。メリット・デメリット(使える・使えない)があるので組み込みながら調整が必要ですが、一番簡単と思われるのはTransferTextを使った方法でしょう
strwhere = "(省略)"
'//出力設定
Dim reportName As String
Dim queryName As String
Select Case PrinterGRP.Value
Case 1
reportName = "R_請求書10"
queryName = "(R_請求書10に対応したクエリ)"
Case 2
reportName = "R_請求書控"
queryName = "(R_請求書控に対応したクエリ)"
End Select
'//CSV出力先設定
Dim filePath As String
filePath = "C:\foo.csv"
'//処理実行
If in_kbn = "w" Then
'//印刷
DoCmd.OpenReport reportName, , , strwhere
'//CSV出力
DoCmd.TransferText acExportDelim, , queryName, filePath
Else
'//プレビュー
DoCmd.OpenReport reportName, acPreview, , strwhere
End If
DoCmd.TransferText メソッド (Access)
事前に出力用のクエリを作成しておく必要があります。(上記コードでは(R_請求書10に対応したクエリ)と(R_請求書控に対応したクエリ)。実際にはシステムに合わせたわかりやすい名前にします)
通報 ...