回答編集履歴

3

書式の改善

2020/10/15 07:01

投稿

hatena19
hatena19

スコア34075

test CHANGED
@@ -176,6 +176,8 @@
176
176
 
177
177
  イミディエイトの結果(印刷設定で変わります。)
178
178
 
179
+
180
+
179
181
  ```
180
182
 
181
183
  360
@@ -190,7 +192,9 @@
190
192
 
191
193
  7542
192
194
 
193
- ```
195
+ ```
196
+
197
+
194
198
 
195
199
  3列目は左から7542(TWIPS)の位置ということになります。(567TWIPS≒1cm)
196
200
 
@@ -198,9 +202,9 @@
198
202
 
199
203
  レポートの「グループ化と並び替え」で下記の順で並び替えを昇順に設定します
200
204
 
201
- 顧客コード(テーブルの主キーフィールド名)
205
+ - 顧客コード(テーブルの主キーフィールド名)
202
-
206
+
203
- Num
207
+ - Num
204
208
 
205
209
 
206
210
 
@@ -226,4 +230,4 @@
226
230
 
227
231
 
228
232
 
229
- 3列目判定は余裕をもって Me.Left > 7000 としましたが、Debug.Print Me.Leftの結果を元に調整してください。
233
+ 3列目判定は余裕をもって `Me.Left > 7000` としましたが、`Debug.Print Me.Left` の結果を元に調整してください。

2

コード追記

2020/10/15 07:01

投稿

hatena19
hatena19

スコア34075

test CHANGED
@@ -123,3 +123,107 @@
123
123
 
124
124
 
125
125
  [グループ毎連番を自動入力する関数 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-428.html)
126
+
127
+
128
+
129
+ サンプルコード追記
130
+
131
+ ---
132
+
133
+ 簡単なサンプルを作成してみました。
134
+
135
+
136
+
137
+ 複数シールの出力は下記の方法にしました。
138
+
139
+ 1.b. クエリを使う方法
140
+
141
+
142
+
143
+ レポートのレコードソースのクエリは下記になります。
144
+
145
+ テーブル1は実際のテーブル名にしてください。
146
+
147
+
148
+
149
+ ```sql
150
+
151
+ SELECT テーブル1.*, T_Num.Num FROM テーブル1, T_Num
152
+
153
+ WHERE T_Num.Num<=[箱のシール枚数];
154
+
155
+ ```
156
+
157
+
158
+
159
+ また、現在何列目かは、Me.Left で取得する方法にしました。
160
+
161
+ Me.Left で用紙の左からの距離を取得できます。
162
+
163
+
164
+
165
+ 詳細セクションのフォーマット時に下記のように記述すると、イミディエイトウィンドウに結果が出力されます。
166
+
167
+ ```vba
168
+
169
+ Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
170
+
171
+ Debug.Print Me.Left
172
+
173
+ End Sub
174
+
175
+ ```
176
+
177
+ イミディエイトの結果(印刷設定で変わります。)
178
+
179
+ ```
180
+
181
+ 360
182
+
183
+ 3951
184
+
185
+ 7542
186
+
187
+ 360
188
+
189
+ 3951
190
+
191
+ 7542
192
+
193
+ ```
194
+
195
+ 3列目は左から7542(TWIPS)の位置ということになります。(567TWIPS≒1cm)
196
+
197
+
198
+
199
+ レポートの「グループ化と並び替え」で下記の順で並び替えを昇順に設定します
200
+
201
+ 顧客コード(テーブルの主キーフィールド名)
202
+
203
+ Num
204
+
205
+
206
+
207
+ あとは詳細セクションのフォーマット時のイベントプロシージャを下記のように記述します。
208
+
209
+
210
+
211
+ ```vba
212
+
213
+ Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
214
+
215
+ If Me.Left > 7000 And Me.Num = 1 And Me.箱のシール枚数 = 2 Then
216
+
217
+ Me.NextRecord = False
218
+
219
+ Me.PrintSection = False
220
+
221
+ End If
222
+
223
+ End Sub
224
+
225
+ ```
226
+
227
+
228
+
229
+ 3列目判定は余裕をもって Me.Left > 7000 としましたが、Debug.Print Me.Leftの結果を元に調整してください。

1

説明追記

2020/10/15 06:55

投稿

hatena19
hatena19

スコア34075

test CHANGED
@@ -83,3 +83,43 @@
83
83
 
84
84
 
85
85
  以上を組み合わせてコードを書いてみてください。それでうまくいかないなら、できたところまでのコードを提示してうまくいかない部分を質問してください。
86
+
87
+
88
+
89
+
90
+
91
+ おまけ
92
+
93
+ ---
94
+
95
+ もしデータの出力順を変更してもいいのなら、
96
+
97
+ 枚数2のデータが連続すると、3列目の空白も連続することになり、用紙が無駄になる。
98
+
99
+ 枚数1のレコード内で連番を取得(入力)
100
+
101
+ 枚数2のレコード内で連番を取得(入力)
102
+
103
+ としておいて、この連番で並び替えを設定しておけば、
104
+
105
+
106
+
107
+ 1列目 2列目 3列目
108
+
109
+ 枚数1 枚数2 枚数2
110
+
111
+ 枚数1 枚数2 枚数2
112
+
113
+ ・・・
114
+
115
+
116
+
117
+ というように出力されて空白シールが最小限にできます。
118
+
119
+
120
+
121
+ グループ毎の連番は下記を参考に。
122
+
123
+
124
+
125
+ [グループ毎連番を自動入力する関数 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-428.html)