Microsoft Access 掲示板

アクセス レポート内2つのグループ化されたものに連番を振りたい

11 コメント
views
4 フォロー

以下、VBAを作成しましたが、
2ページ目から、”0”から始まる連番になり、それ以降のページごとに”0”からの連番になってしまい
悩んでいます。
どこがおかしいのか、ご教示いただけますと幸いです。

'フォームモジュール宣言部
Dim Cnt As Integer

'参加班ヘッダーフォーマット時
Private Sub 参加班ヘッダー1_Format(Cancel As Integer, FormatCount As Integer)
 Me.txtCnt = 0
End Sub

'詳細セクションフォーマット時
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

 If FormatCount = 1 Then
Me.txtCnt = Me.txtCnt + 1
End If
End Sub

テキストボックス名:txtCnt

HIRO
作成: 2023/01/27 (金) 15:23:35
通報 ...
1

「2つのグループ化されたもの」の意味がよく分かりませんが、
レポートのグループ化/並べ替えの設定で「参加班」フィールドでグループ化されていて、さらにその下に別のフィールドでグループ化されているということでしょうか。

参加班のヘッダーの「セクション繰り返し」プロパティが「はい」「いいえ」のどちらになってますか。

2

参加班ヘッダーの「セクション繰り返し」プロパティが「はい」になっているとしたら、各ページの先頭で参加班ヘッダーが表示されるのでtxtCntが0になりますので、質問のような結果になります。

グループヘッダーではなくグループフッターを表示させてそこで Me.txtCnt = 0 とすればどうでしょう。
あと、レポートヘッダーのフォーマット時でも Me.txtCnt = 0 とします。

グループフッター、レポートヘッダーを表示したくないなら、高さを0にしておけばいいでしょう。

Private Sub グループフッター2_Format(Cancel As Integer, FormatCount As Integer)
    Me.txtCnt = 0
End Sub

Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)
    Me.txtCnt = 0
End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    If FormatCount = 1 Then
        Me.txtCnt = Me.txtCnt + 1
    End If
End Sub

グループフッター2 の部分は実際のグループフッター名にしてください。

3

早速ご回答いただき有難うございます。

言葉足らずで恐縮です。

”2つのグループ化されたもの”の意味合い的には、
1グループ目 → 参加班
2グループ目 → ここに割り振られたID(3人参加の場合は、Nameが異なっても同じ番号が振られており、そのIDで”グループ化”をしています。

上の2グループを、”参加班”をヘッダーでグループ化、”ID”をフッターでグループ化しているのですが、”参加班”ごとに連番を振りたい感じです。

この場合ですと、いかがでしょうか?

4

上の回答ではご希望の結果と異なりますか。

もし、異なるなら、現状の出力例、ご希望の出力例を提示してもらえますか。

5

現状の出力 → 全てのページに対して、連番が1~最終番号まで振られました。
希望の出力 → 参加班ごとに連番を振りたい

が希望でした。

6
りんご 2023/01/28 (土) 14:24:08 4d616@0e907

レポート画面のスクショ、コード画面のスクショがあったほうが解決するのではなくて?
現状の、希望のスクショじゃなくて、回答No2のコードを試した結果を示して説明しないとね。

7
hatena 2023/01/28 (土) 15:42:58 修正

参加班のグループヘッダーの「セクション繰り返し」は「はい」「いいえ」のどちらになってますか。

参加班のグループフッターは表示されてますか。=「フッターセクション付き」になっているか。
そのグループフッターのフォーマット時のイベントプロシージャは下記になっているか。

Private Sub グループフッター2_Format(Cancel As Integer, FormatCount As Integer)
    Me.txtCnt = 0
End Sub

「グループフッター2」の部分は実際のグループフッター名にしてください。

とりあえず上記を確認してください。

そのうえでりんごさんも言われてますが現状のレポートのスクリーンショットがあるとわかりやすいですね。

8

参加班ヘッダーの"セクション"は"はい"になっていました。そして、hatenaさんのおっしゃる通りのことに気付き、実行してみた結果、思い通りになりました。有難うございました。お礼が遅くなり失礼しました。

りんごさんもアドバイス有難うございます。
スクショは諸事情ありで、上がれませんでしたが、次回からは、例え、を文字に起こして質問するようにしてみます。

9

もう一つ教えてください。
3つのグループ化されたもので、2つ目のグループヘッダーは”セクション繰り返し”→”はい”になっている場合で、次ページから、”0”から始まる場合の解消法となるといかがでしょうか?
これは、単純にグループ化されたものが増えた場合の対処法としてご教示いただければ幸いです。

10

グループヘッダーの”セクション繰り返し”→”はい”にして、そのグループヘッダーで連番をリセットすると、各ページの先頭に繰り返し表示されてフォーマット時イベントが発生するために連番はページごとにリセットされてしまいます。

そのため、私の回答ではグループヘッダーではなくグループフッターで連番リセットするようにしました。その場合、先頭ページではリセットされないのでレポートヘッダーでもリセットするようにしました。

この方法なら、”セクション繰り返し”→”はい”の影響は受けないと思います。

11

なるほど。
ご教示有難うございました。
大変参考になりました。