- ベストアンサー
accessでボタンクリックで表示中のレコードをラベルに印刷する方法
会社情報のデータベースをアクセスで作成しています。 フォーム上で会社Aを表示させ、そこにあるボタンをクリックするとラベル(39面詰)いっぱいに会社Aの名前・住所などを印刷することができるボタンを作成したいと思っているのですが、何か良い方法はないでしょうか? アクセス2002を使用中です。 何かいい方法がありましたらご教授くださいm(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>示中のレコードのみをボタンを押すことによって印刷したいと思っているのですが レポートのプロパティを出しデータにあるレコードソースの右にある...のボタンをクリックしクエリビルダを出しSQLステートメントに抽出条件を入れればフォームに表示されているレコードのみ出力できます。 会社情報のレコードがあるテーブルのキーをフォーム上から取得するようにすれば出来ます。 例えば会社情報のテーブルに会社コードというキーがあるとしてフォーム上にも会社コードというコントロールがあるとします。 SQLステートメントでレポートに必要なフィールドを追加して(全部でもかまわないと思います)会社コードの抽出条件に = Forms![フォーム名]![会社コード] のようにすればフォーム上に表示されているレコードだけレポートに出力できます。
その他の回答 (3)
- gosuke32
- ベストアンサー率29% (36/124)
私だったらこうします。 (1)会社情報のテーブルの作成 ・会社情報テーブル 「一連番号」・・数値型orオートナンバー(キー) 「郵便番号」 「住所」 「会社名」・・・その他は必要に応じて (2)会社情報のフォームの作成 ・会社情報フォーム フォームにラベル作成のボタンを設けてください。 (3)ラベル用クエリの作成 ・ラベル用クエリ コントロールソースは「会社情報テーブル」で 「一連番号」、「郵便番号」、「住所」、「会社名」 「一連番号」の抽出条件のところに、 「Forms!会社情報フォーム!一連番号」を入力して下さい。 (4)ラベル用レポートの作成 ・ラベル用レポート コントロールソースは「ラベル用クエリ」で作成お願いします。 (5)フォームとレポートの連携 フォームの「ラベル作成」のボタンのプロパティのイベントのクリック時を「イベントプロシージャ」で Private Sub ラベル作成_Click() On Error GoTo Err_ラベル作成_Click DoCmd.OpenReport "ラベル用レポート", acPreview exit_ラベル作成_click: Exit Sub Err_ラベル作成_Click: MsgBox Err.Description Resume exit_ラベル作成_click End Sub を入力して下さい。 するとフォームのボタンを押すとプレビューが表示されますので、それを印刷すればOKです。 お試しあれ。
お礼
ありがとうございます。 ご参考にさせていただきましたm(__)m
- O_cyan
- ベストアンサー率59% (745/1260)
>名前が適切ではありません:詳細_print と表示がでて・ 失礼しました。 1箇所訂正です。レポートの詳細のプロパティのフォーマット時のイベントは Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) ではなく Private Sub 詳細_Format(Cancel As Integer, PrintCount As Integer) ですよね。 詳細のフォーマット時イベントを上記のように詳細_Printから詳細_Formatにしてください。フォーマット時イベントのコードビルダを開いた時のPrivate Subの名前そのままです。 印刷時のイベントからコピーしたので詳細のフォーマット時のイベントでPrintをFormatに直すの忘れました。 ゴメンなさい。
- O_cyan
- ベストアンサー率59% (745/1260)
モジュールを使う場合。レポートが1枚分のラベルサイズのレポートとした場合 ラベルのレポートの詳細に非表示のテキストボックスを1つ作ります。例えばそのテキストボックス名をText1としラベルの印刷枚数を枚数とて指定した場合。 レポートの詳細のプロパティのフォーマット時のイベントに Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Dim 枚数 As Integer 枚数 = 39 If [Text1] <> 枚数 Then [Text1] = [Text1] + 1 Else [Text1] = 1 End If End Sub 同様に印刷時のプロパティに Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer) Dim 枚数 As Integer 枚数 = 39 If [Text1] <> 枚数 Then [Text1] = [Text1] + 1 Else [Text1] = 1 End If End Sub を記述します。 これでラベルを39枚出力するレポートが出来ます。 印刷枚数が可変する場合は 枚数 = 39 の部分を 枚数 = Forms![フォーム名]![コントロール名] にしてフォームに枚数を指定するコントロールを作りそのコントロールから枚数を取得すればOKです。
補足
ありがとうございます。 上記の方法を試してみたのですが、名前が適切ではありません:詳細_print と表示がでてレポートのプレビューへの切り替えがうまくいきません。 あと、表示中のレコードのみをボタンを押すことによって印刷したいと思っているのですが、やはり難しいのでしょうか? 誠に勝手なお尋ねで恐縮です。 お時間ありましたらご教授ください。 宜しくお願い致しますm(__)m
お礼
どうもありがとうございました。 やっとのことでボタンから表示レコードを印刷するボタンを作ることができました。 また何かありましたら宜しくお願い致しますm(_ _)m