アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessのレポートで、明細行を必ず8行ずつ印刷したいのです。
8行に満たない場合は、8行になるまで空白行を加えます。
そして、ヘーダー部に明細の金額合計があり、最終ページはヘッダー部を含めて8行にしたいので、明細行が7行となります。
とりあえず↓
印刷する明細行数を常に8の倍数になるように空白行を作り、8行ごとに改ページしてみました。
しかし、最初の1ページ目はちゃんと8行で改行されますが、2ページ目からは、1行ずつしか印刷されません。

例えば、明細レコードが9レコードの場合、空白行含めて15行の明細をつくりました。
それを以下のプログラムで実行すると、9レコード目から15レコード目までは、1ページに1行ずつしか印刷されません。
どうすればいいのでしょうか?
どなたかよろしくお願いします。
*****************************************************
Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer)
'印刷行の初期化
cntPage = 0
End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
'印刷行を更新
cntPage = cntPage + 1
If cntPage = 8 Then
'改ページ
Me.Section(acDetail).ForceNewPage = 2
'印刷行の初期化
cntPage = 0
End If

A 回答 (1件)

考え方として、次の2点が挙げられます。


(1)明細行の高さを調節して、8行で1ページ限界になるようにする。
(2)元になるデータに目印を付ける。
話としては(1)が簡単なんですが、何故そうしないのでしょうか?
(2)は例えば明細行に「順番」フィールドを設け0、1、2・・・とします。
Int(順番/8)がページを構成するグループIDになりますね。これを
「並べ替え/グループ化の設定」で指定し、「同一ページ印刷」を
「しない」にすれば異なるグループIDのデータは同一ページに印刷
されない、つまり、改ページされます。
レポート元になるクエリに何らかの並べ替え項目があるなら、この
グループIDを得る方法は簡単です。元データは連続した番号でなく
てもかまいません。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとございました。
(1)にしなかったのは、改ページ以外にも、行数によっていろいろと編集すべき点があったためです。

改ページプロパティの値を、8行目以外では0にする方法で解決しました。
参考にあるアドバイスどうもありがとうございました。

cntPage = cntPage + 1
If cntPage = 8 Then
Me.Section(acDetail).ForceNewPage = 2
cntPage = 0
Else
Me.Section(acDetail).ForceNewPage = 0
End If

お礼日時:2009/09/07 10:39

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A