プロが教える店舗&オフィスのセキュリティ対策術

いつも大変お世話になっております。m(_ _)m

Accessのフォームにて、データを入力します。
入力している画面に「印刷」というボタンを作り、入力し終わった情報をレポート印刷(出力)したいです。

フォームもレポートも作成済みです。
データの区分けとしては、「管理No.」というフィールドが主キーであります。「現在画面に表示されているデータ」とは、「現在画面に表示されているデータの管理No.」ということになります。
その管理No.を抽出条件とし、印刷を行いたいです。

ごく簡単な方法で教えてほしいと思います。

なんとなく想像からすると、クエリを作り、抽出条件にその時の画面の管理No.を取り込む・・・というか・・・そんなイメージはありますが、どうすればいいのか分かりません。

よろしくお願い致します。m(_ _)m

A 回答 (4件)

レポート印刷時に条件を設定できます。


OpenReportメソッドの4つ目の引数です。

例:
Private Sub コマンド1_Click()
 If IsNull(Me![管理No.]) = False Then
  DoCmd.OpenReport "レポート名", acViewNormal, , "[管理No.]=" & Me![管理No.]
 End If
End Sub
    • good
    • 0
この回答へのお礼

さっそくのお返事ありがとうございます。
レポートの「開くとき」の「イベントプロシージャ」の中に↑を記述すればいいのでしょうか?
すみません。やってみましたが、うまくいきません。
マクロなどを使って、ボタンに「レポートを開く」というような動作を割り当てるわけですよね?(きっと)その時、レポートに↑を記述して管理No.で印刷されるように制御するということでしょうか?
お手数おかけします。よろしくお願いします。m(_ _)m

お礼日時:2006/12/18 15:34

#1です。


説明不足でした。

フォームの印刷ボタンのクリック時のイベントプロシージャに#1のソースを記述してください。

レポートはそのままで、変更しなくて結構です。(全レコード印刷される状態で大丈夫です。)

フォームのボタンを押した時に、特定のレコードを指定してレポートを印刷することが出来ます。
    • good
    • 0
この回答へのお礼

何度も回答ありがとうございます。
できました!!!すばらしく!!!簡単に!!!!!
本当に本当に本当にありがとうございました!!!!

お礼日時:2006/12/18 18:40

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

注意事項としては、フォームに入力しただけでは入力データの保存・登録が完了していません。
その対策は、上記コードでは行っていません。
    • good
    • 0
この回答へのお礼

ありがとうございます。うまく印刷できました。
とても感謝しています。

お礼日時:2006/12/18 18:41

#3さんの仰るとおり、入力直後(保存前)に印刷ボタンを押すと入力中の内容は反映されませんね。

忘れていました。
プログラムを修正します。

Private Sub コマンド1_Click()
 Me.Refresh
 If IsNull(Me![管理No.]) = False Then
  DoCmd.OpenReport "レポート名", acViewNormal, , "[管理No.]=" & Me![管理No.]
 End If
End Sub
    • good
    • 1
この回答へのお礼

何度もご丁寧にありがとうございました。
無事、解決できました。
本当にありがとうございました!

お礼日時:2006/12/18 18:42

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

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


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