<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97超入門>自動採番?
 簡単な自動採番 複雑な自動採番 クエリで連番 レポートで連番 コードを書かずに連番



■レポートで連番

レポートの場合は比較的楽です。
レポート内にそういうプロパティもありますし、コードも書きやすい。
それは、「フォーマット時」というイベントがあるからなんですね。

レポートは印刷してしまえば、フォームやクエリーのように、スクロールバーを動かしたりするような動きがいっさいないので、
1行ごとに細かい判断をさせていくことが可能なんです。

それを利用した、カンタンな番号の計算方法です。

カンタンなレポートを作ってみました。お隣のページで使った、[テーブルC]というのを基にしたレポートです。

で、詳細部分の左端のほうにでも、ちいさいテキストボックスを作ります。
非連結。どのフィールドとも結びついてないただのテキストボックスですね。

名前は「テキストxx」のままでもいいですが、あたしはここでNoと変えてみました。
(実際には、Noっていう名前をテキストボックスなどにつけるの、あんまりよくないみたいですね・・・
「予約語」として扱われる可能性が高いので・・・このページの中の説明だけってことで)


後は、レポートヘッダーのフォーマット時イベントと、詳細のフォーマット時イベントに、下のようなコードを書けば完了。
これもただ足し算して、レポートの先頭のところで変数をゼロにしているだけですよね。

Option Compare Database
Option Explicit
Dim Nbr

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

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
Nbr = Nbr + 1
Me![No] = Nbr

End Sub

と、このレポートを開くと、こんな感じで、非連結のNoというフィールドに値が入ります。