teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/07/14 06:50

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -3,4 +3,48 @@
3
3
  すべてのクーポン券の裏面に社名ロゴを印刷するのなら、裏面に社名ロゴを印刷した用紙を多数用意しておいて、プリンターにセットしておいてクーポン券を印刷すればいいかと思います。
4
4
 
5
5
  プリンターの両面印刷機能を使って、表面も裏面も同時に印刷するのは、ラベル印刷で1枚に複数レコードを印刷している場合、かなり難易度が高くなります。
6
- (ヒントとしてはサブレポートをうまく使うか、VBAを使って制御することになります。)
6
+ (ヒントとしてはサブレポートをうまく使うか、VBAを使って制御することになります。)
7
+
8
+ 追記
9
+ ---
10
+
11
+ **サブレポート案**
12
+
13
+ レポートのレコードソースに、「ページ」というフィールドを追加する必要があります。
14
+ 「ページ」フィールドの値は、1ページ10件なので、10件ごとにカウントアップするようにします。
15
+ クエリで連番を表示する方法や、VBAで連番を入力していく方法が検索すれば見つかりますので、まずは連番を出力できるようにします。
16
+ 連番で取得できれば、それを使って下記の
17
+ [連番] \ 10
18
+ で10毎にカウントアップできるページフィールドができます。
19
+
20
+ 日付で抽出するのでそれを考慮しないといけないのでかなり高難度です。
21
+ 前回の質問の OpenReport の引数で抽出する方法ではなくレコードソースのクエリに抽出条件を設定することになります。
22
+
23
+ 上記とは別にメインレポートの用のテーブルを作成します。
24
+ フィールドは「ページ」のみです。ここには連番を入力しておきます。
25
+ これをレコードソースとするレポートを作成して、上記のレポートを詳細セクションにサブレポートとして埋め込みます。
26
+ サブレポートコントロールのリンク親フィールド/リンク子フィールドは「ページ」に設定します。
27
+ サブレポートのサイズは用紙サイズから上下左右余白を引いたサイズにします。
28
+
29
+ このサブレポートの下部の詳細セクションに社名とロゴを10個配置します。
30
+
31
+ サブレポートのすぐ下に改ページコントロールを配置します。
32
+
33
+ 以上です。
34
+
35
+
36
+ **VBA案**
37
+
38
+ 現状のレポートの詳細セクションに、 社名とロゴを配置します。
39
+ 詳細セクションのフォーマット時イベントで、
40
+ 表ページをフォーマットしているときは、社名とロゴを非表示にします。
41
+ 裏ページをフォーマットしているときは、社名とロゴを表示させて、それ以外を非表示にします。
42
+ また、裏ページをフォーマットしているときは、`Me.NextRecord = False`で次レコードに移動しないようにします。
43
+
44
+ 表ページか裏ページの判定は、`Me.Page Mod 2`の結果が0か1かで可能です。
45
+
46
+ これもレポートのイベントの発生のメカニズムを理解している必要がありますので、高難度ですね。
47
+
48
+ もし、高難度でもチャレンジしたい、ということなら、下記の私の管理する掲示板がありますので、そちらで質問していただければ、ファイルをアップロードできますので、現状のファイルをもとに改修する方法を具体的にアドバイスできると思います。
49
+
50
+ [Microsoft Access 掲示板 - zawazawa](https://zawazawa.jp/ms-access/)