- ベストアンサー
Accessのフォームで、画面表示されているものを印刷する
いつも大変お世話になっております。m(_ _)m Accessのフォームにて、データを入力します。 入力している画面に「印刷」というボタンを作り、入力し終わった情報をレポート印刷(出力)したいです。 フォームもレポートも作成済みです。 データの区分けとしては、「管理No.」というフィールドが主キーであります。「現在画面に表示されているデータ」とは、「現在画面に表示されているデータの管理No.」ということになります。 その管理No.を抽出条件とし、印刷を行いたいです。 ごく簡単な方法で教えてほしいと思います。 なんとなく想像からすると、クエリを作り、抽出条件にその時の画面の管理No.を取り込む・・・というか・・・そんなイメージはありますが、どうすればいいのか分かりません。 よろしくお願い致します。m(_ _)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3さんの仰るとおり、入力直後(保存前)に印刷ボタンを押すと入力中の内容は反映されませんね。忘れていました。 プログラムを修正します。 Private Sub コマンド1_Click() Me.Refresh If IsNull(Me![管理No.]) = False Then DoCmd.OpenReport "レポート名", acViewNormal, , "[管理No.]=" & Me![管理No.] End If End Sub
その他の回答 (3)
WhereCondition と呼ばれる引数を利用します。 Private Sub コマンドXXXX_Click() On Error Resume Next If Nz(Me.管理番号) > 0 Then DoCmd.OpenReport "XXXX", acXXXXX, , "管理番号=" & Me.管理番号 Else MsgBox "入力未了にて印刷できません。", _ vbExclamation, _ " 処理中断のお知らせ" End If End Sub 注意事項としては、フォームに入力しただけでは入力データの保存・登録が完了していません。 その対策は、上記コードでは行っていません。
お礼
ありがとうございます。うまく印刷できました。 とても感謝しています。
- venzou
- ベストアンサー率71% (311/435)
#1です。 説明不足でした。 フォームの印刷ボタンのクリック時のイベントプロシージャに#1のソースを記述してください。 レポートはそのままで、変更しなくて結構です。(全レコード印刷される状態で大丈夫です。) フォームのボタンを押した時に、特定のレコードを指定してレポートを印刷することが出来ます。
お礼
何度も回答ありがとうございます。 できました!!!すばらしく!!!簡単に!!!!! 本当に本当に本当にありがとうございました!!!!
- venzou
- ベストアンサー率71% (311/435)
レポート印刷時に条件を設定できます。 OpenReportメソッドの4つ目の引数です。 例: Private Sub コマンド1_Click() If IsNull(Me![管理No.]) = False Then DoCmd.OpenReport "レポート名", acViewNormal, , "[管理No.]=" & Me![管理No.] End If End Sub
お礼
さっそくのお返事ありがとうございます。 レポートの「開くとき」の「イベントプロシージャ」の中に↑を記述すればいいのでしょうか? すみません。やってみましたが、うまくいきません。 マクロなどを使って、ボタンに「レポートを開く」というような動作を割り当てるわけですよね?(きっと)その時、レポートに↑を記述して管理No.で印刷されるように制御するということでしょうか? お手数おかけします。よろしくお願いします。m(_ _)m
お礼
何度もご丁寧にありがとうございました。 無事、解決できました。 本当にありがとうございました!