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

会社情報のデータベースをアクセスで作成しています。

フォーム上で会社Aを表示させ、そこにあるボタンをクリックするとラベル(39面詰)いっぱいに会社Aの名前・住所などを印刷することができるボタンを作成したいと思っているのですが、何か良い方法はないでしょうか?

アクセス2002を使用中です。

何かいい方法がありましたらご教授くださいm(__)m

A 回答 (4件)

>示中のレコードのみをボタンを押すことによって印刷したいと思っているのですが


レポートのプロパティを出しデータにあるレコードソースの右にある...のボタンをクリックしクエリビルダを出しSQLステートメントに抽出条件を入れればフォームに表示されているレコードのみ出力できます。
会社情報のレコードがあるテーブルのキーをフォーム上から取得するようにすれば出来ます。
例えば会社情報のテーブルに会社コードというキーがあるとしてフォーム上にも会社コードというコントロールがあるとします。
SQLステートメントでレポートに必要なフィールドを追加して(全部でもかまわないと思います)会社コードの抽出条件に
= Forms![フォーム名]![会社コード]
のようにすればフォーム上に表示されているレコードだけレポートに出力できます。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
やっとのことでボタンから表示レコードを印刷するボタンを作ることができました。

また何かありましたら宜しくお願い致しますm(_ _)m

お礼日時:2006/01/26 16:01

私だったらこうします。


(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です。
お試しあれ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご参考にさせていただきましたm(__)m

お礼日時:2006/01/26 15:59

>名前が適切ではありません:詳細_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に直すの忘れました。
ゴメンなさい。
    • good
    • 0

モジュールを使う場合。

レポートが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

補足日時:2006/01/23 17:21
    • good
    • 0

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