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

ホントに初心者です。
Accessでラベルを出す際に、テーブルには何件もデータが入っているのですが、その中のいくつかをピックアップして、なおかつ、一枚の用紙に同じ宛先を複数印刷したい時はどのようにすればよいでしょうか?
分かりやすく教えて頂ければ幸いです。

A 回答 (1件)

>一枚の用紙に同じ宛先を複数印刷したい時はどのようにすればよいでしょうか?



モジュールを使った方法とテーブルを使った方法があります。テーブルを使った方が簡単ですが・・。

テーブルを使う方法
連番を保存するテーブルを作ります。連番は1から印刷枚数の最大より多めに順に入力しておく。(例えばテーブル名をT連番としフィールドは連番とします)
別々の枚数が必要ならラベルの元になるテーブルに印刷枚数というフィールドを作りそこに必要な枚数を入力しておきます。
そのテーブルを元にクエリを作りそのクエリにテーブル追加でT連番を追加し連番をクエリのフィールドに追加します。(テーブルとT連番はリレーションを取らないように)連番の抽出条件に<=[印刷枚数]と記述します。
そのクエリを開くと印刷枚数分同じレコードが出来ます。
そのクエリをラベルのレポートのレコードソースにして出力すれば印刷枚数に合わせて同じシールが出力されます。

全て同じ枚数ならクエリの抽出条件を変えれば出来ます。
連番の抽出条件に
<=[何枚出力しますか]
と記述します。レポートをプレビューや印刷をする際に[何枚出力しますか]というパラメータダイアログが表示されますのでそこに出力したい枚数を入力すればラベルが入力された数字の枚数出力されます。

モジュールを使う場合
レポートの詳細に非表示のテキストボックスを1つ作ります。例えばそのテキストボックス名をText1としテーブルトの印刷枚数のフィールド名を印刷枚数とした場合。
レポートの詳細のプロパティのフォーマット時のイベントに
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
Dim 指定枚数 As Integer
指定枚数 = Me!印刷枚数
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
指定枚数 = Me!印刷枚数
If [Text1] <> 指定枚数 Then
[Text1] = [Text1] + 1
Else
[Text1] = 1
End If
End Sub
を記述します。
これで出来ます。

試してみてください。

>その中のいくつかをピックアップして
抽象的すぎますが・・作ったクエリで必要なレコードを抽出できるような抽出条件を作らないとできません。
例えばテーブルにYes/No型のフィールドを追加して出力したいレコードにチェックをしれクエリでそのフィールドに
True
と条件をいれればチェックされているレコードだけ抽出できます。
このように抽出条件を考えてみてください。
    • good
    • 1

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