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

accessのbvaの本を参照してレコードがない場合でも最後まで罫線を出力する方法を試しているのですが、インクリメントがうまくいっていないのかいつまでも改ページを続けてしまいます。

どなたか解決する方法を教えてください。

Option Compare Database
Option Explicit
'次の3つの変数はdeclarationセクションで宣言します
'現在印刷中のレコード番号を表す変数
Private pintRecord As Integer

'レコードソースの全レコード数を表す変数
Private pintRecordMAX As Integer

'1ページ当たりに印刷するレコード数の定数
Private Const cintRecperPage As Integer = 15

Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer)

'現在印刷中のレコード番号を初期化します
pintRecord = 0

'レコードソースの全レコード数を取得します
pintRecordMAX = DCount("*", "T_出荷明細", "出荷No=reports![R_出荷証明書3 test]![出荷No]") '"*"にすることでクエリ内のレコード数をカウント。Null値フィールドを含むレコードも対象。

End Sub


Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

'各テキストボックスの可視/非可視のフラグ
Dim blnVisible As Boolean

'現在印刷中のレコード番号をインクリメントします
pintRecord = pintRecord + 1

If (pintRecord Mod cintRecperPage) > 0 Then
'1ページ内の途中のレコードを印刷している場合

'改ページしないようにします
Me!bpage.Visible = False

'印刷するレコードの位置によって、各テキストボックスの可視/非可視の
'フラグと、次レコードへ進めるかどうかの設定を行います

If pintRecord < pintRecordMAX Then
blnVisible = True
Me.NextRecord = True

ElseIf pintRecord = pintRecordMAX Then
blnVisible = True
Me.NextRecord = False

Else
blnVisible = False
Me.NextRecord = False

End If

Else
'1ページ内の最後のレコードになったとき

If pintRecord <= pintRecordMAX Then
'まだ印刷するレコードが残っているときはその行を印刷後、改ページします
blnVisible = True
Me!bpage.Visible = True

Else
'印刷するレコードがもうないときはその内容は印刷しません
blnVisible = False

End If

End If

'フィールドと連結したテキストボックスの可視/非可視を設定します
Me![品番].Visible = blnVisible
Me![品名].Visible = blnVisible
'Me![寸法使用].Visible= blnvisible
Me![数量].Visible = blnVisible
Me![備考].Visible = blnVisible

End Sub

A 回答 (11件中11~11件)

コードはとくに問題がないと思われるので、


コードはそのままにして、こちらでレポートの
設定をしたものを記しますと、

(1)
T_出荷明細:
出荷No
品番
品名



(2) R_出荷証明書
ヘッダ:
レポートヘッダ
ページヘッダ
出荷Noヘッダ
詳細
ページフッタ
レポートフッタ

並べ替え/グループ化:
出荷No 昇順
グループヘッダ はい
グループフッタ いいえ
グループごと  各値
グループ間隔  1
同一ページ印刷  しない

出荷Noヘッダのプロパティ:
改ページ  カレントセクションの前

レポートの詳細:
出荷No (表示が必要なければ「可視」を「いいえ」
品番
品名
(出荷Noがないとデータが表示されない)


以上の設定で15行直線コントロールを
表示し、レコードが15以上ある場合は
次のページに残りを表示しています。

上記の中で、
出荷Noヘッダのプロパティ:
改ページ  カレントセクションの前
の設定が抜けている、あるいは、レポートの詳細に出荷Noが
ないとかがあるのでは、と思われます

この回答への補足

piroin654さん回答ありがとうございました。

改ページの設定はしないにしていても、カレントセクションの前にしていても変わりませんでした。

直線nextrecordを用いて次のデータに行くMAXレコードになったときは、nextrecordに移動しないという設定にしていて、直線は出続ける設定になっています。


pintRecordMAX = DCount("*", "T_出荷明細", "出荷No=reports![R_出荷証明書3 test]![出荷No]")
にしていたら、改ページする毎に1行行数が減る減少になっていて、きちんとしたMAX行がとれていませんでした。


pintRecordMAX = DCount("*", "T_出荷明細")にすることでいつまでもループし続ける現象は解消しました。

ただ、最終ページが最後まで罫線がひかれなくなりました。
この現象を解消する方法ありますか?

補足日時:2011/03/09 10:56
    • good
    • 0

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

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

関連するカテゴリからQ&Aを探す