Accessお手本データベースのホームへ戻る

レポートとのイベントを表示するお手本データベース

 

7-1-1 レポートのイベントを表示するサンプルデータベース

 

このサンプルデータベースは、Access のレポートのイベントシーケンスをフォーム上のリストボックスに表示します。イベントログのフォームには、レポートを開閉するコマンドボタン。それから、イベントの表示を開始/停止するトグルボタンなどが配置されています。レポートを開くボタンをクリックすると、サンプルレポートが開かれて商品マスタが商品区分毎にプレビュー印刷されます。フォームのリストボックスには、レポートのイベントが発生順にシーケンス番号が付けられて表示されます。リストボックスには、一定の間隔でイベントの境界線(------)が表示されますので、一連のイベントの流れを理解するのに便利です。フォームの最下位には、チェックボックスが配置されていますので、これらのチェックボックスを外すことにより、リストボックスに表示されるイベントを制御することができます。例えば、レポートのページヘッダー/フッターのイベントのみ興味がある場合、Page Header/Footerのチェックをクリックして、その他のイベントのチェックを外します。

 

このサンプルデータベースのイベントシーケンスを分析することにより、請求書を業者指定伝票に印刷するサンプルデータベースのように、グループ単位でページ番号を(1/99)のように印字したり、先頭ページにのみ請求額合計を印字することができます。

 

このサンプルデータベース(CH7-1.mdb)では、以下に示すノウハウを習得することができます。

 

◆ レポートのイベントをフォームのリストボックスに表示させる方法

◆ フォームのタイマー機能の使い方

◆ フォームサイズに合わせて、リストボックスの幅を自動調整する方法

◆ リストボックスの値集合タイプに、ユーザー定義関数を指定して値集合ソースを作成する方法

◆ コレクション型のメモリ変数にメンバを登録/削除する方法

 

 

● サンンプルデータベースで使用するテーブル/クエリを準備するには

 

1 Accessを起動したら作業フォルダに、新規データベースCH7-1.mdbを作成します。

 

2 メニューから外部データベースの取り込みインポートをクリックします。インポートのダイアログが表示されたら、Access のサンプルデータベースNorthwind.mdbを選択してインポートのボタンをクリックします。(Northwind.mdbは、デフォルトでは、”C:\Program Files\Microsoft Office\Office\Samples”にインストールされます。)

 

3 オブジェクトのインポートのダイアログが表示されたら、テーブルのタブをクリックして商品、商品区分テーブルを選択してOKボタンをクリックします。

 

7-1-2 Northwind.mdbから商品、商品区分テーブルをインポートする

 

4 テーブルをインポートしたら、データベースウィンドウにNorthwind.mdbの商品、商品区分テーブルが表示されているか確認します。

 

5 データベースウィンドウからクエリをクリックしたら、一覧からデザインビューでクエリを作成するをダブルクリックします。テーブルの表示ダイアログが表示されたら、閉じるのボタンをクリックして閉じます。メニューからSQLのアイコンをクリックして、SQLビューのウィンドウを表示させたら、リスト7-1-1SQLを入力します。(SQLを入力する代わりに、CH7-1.mdbからqryProductsbyCategoryをインポートしてもよい。)クエリをデザインモードで開いたら、図7-1-3のようになっているか確認します。クエリをqryProductsbyCategoryの名称で保存して閉じます。

 

リスト7-1-1 qryProductsbyCategorySQL

SELECT 商品区分.区分コード, 商品区分.区分名, 商品.商品コード, 商品.商品名, 商品.梱包単位, 商品.単価

FROM 商品区分 INNER JOIN 商品 ON 商品区分.区分コード = 商品.区分コード;

 

図 7-1-3 qryProductsbyCategoryをデザインビューで表示した例

 

6 テーブルとクエリの準備ができたらAccess を終了させます。

 

 

● イベントを発生させるためのサンプルレポートを作成するには

 

1 Access を起動したら、作業フォルダに作成したCH7-1.mdbを開きます。

 

2 データベースウィンドウが表示されたら、レポートをクリックします。新規作成のボタンをクリックして、レポートの新規作成ダイアログを表示させます。ダイアログのリストボックスから、デザインビューを選択します。基になるテーブル/クエリのコンボボックスからは、qryProductsbyCategoryを選択してOKボタンをクリックします。

 

3 レポートのデザインウィンドウが表示されたら、メニューから並べ替え/グループ化のアイコンをクリックします。ダイアログのフィールドの1行目のコンボボックスから、区分コードを選択します。並べ替え順序のコンボボックスからは、昇順を選択します。グループプロパティのグループヘッダー/グループフッターのコンボボックスからは、“はい”を選択します。フィールドの2行目のコンボボックスから商品コードを選択します。並べ替え順序のコンボボックスからは、昇順を選択します。ダイアログの閉じるのボタン(X)をクリックして閉じます。

 

7-1-4 ダイアログから区分コード、商品コードを選択して並べ替え順序とグループプロパティを設定する

 

4 メニューからフィールドリストのアイコンをクリックして、ダイアログを表示させます。ダイアログから区分コードと区分名をドラッグして、レポートの区分コードヘッダーに配置します。ダイアログから、商品コード、商品名、梱包単位、単価のフィールドをドラッグして、レポートの詳細に配置します。テキストボックスのラベルを切り取って、区分コードヘッダーに貼り付けたら、図7-1-5のように再配置します。

 

7-1-5 イベントを発生させるサンプルレポートのレイアウト

 

5 メニューからツールボックスを表示させたら、ラベルのアイコンをクリックして、レポートヘッダーに“区分別商品一覧”のラベルを作成します。ツールボックスからテキストボックスのアイコンをクリックしたら、ページヘッダーに日付を印字するテキストボックスを作成します。テキストボックスのコントロールソースには、=Now()を埋め込みます。ツールボックスからテキストボックスのアイコンをクリックしたら、区分コードフッターとレポートフッターに配置します。これらのテキストボックスのコントロールソースには、=Sum([単価])を埋め込んで単価の合計金額を印字させます。ツールボックスからテキストボックスのアイコンをクリックして、ページフッターに配置します。テキストボックスのコントロールソースに、="(" & [Page] & "/" & [Pages] & ")"を埋め込んで、ページ番号を(1/999)の形式で印字させます。

 

レポートに配置したコントロールの、プロパティを表7-1-1のように設定します。

 

7-1-1 レポートに配置したコントロールのプロパティ

プロパティの種類

プロパティ

レポートヘッダー

名前

ReportHeader

ページヘッダー

名前

PageHeader

区分コードヘッダー

名前

GroupHeader

詳細

名前

Detail

区分コードフッター

名前

GroupFooter

ページフッター

名前

PageFooter

レポートフッター

名前

ReportFooter

ラベル

標題

区分別商品一覧

フォントサイズ

20

テキストボックス1

名前

txtPageHeader_Date

コントロールソース

=Now()

テキストボックス2

名前

txtGroupID

コントロールソース

区分コード

テキストボックス3

名前

txtGroupName

コントロールソース

区分名

テキストボックス4

名前

txtDetail_ProductID

コントロールソース

商品コード

テキストボックス5

名前

txtDetail_ProductName

コントロールソース

商品名

テキストボックス6

名前

txtDetail_Unit

コントロールソース

梱包単位

テキストボックス7

名前

txtDetail_Cost

コントロールソース

単価

テキストボックス8

名前

txtGroupFooter_Total

コントロールソース

=Sum([単価])

テキストボックス9

名前

txtPageFooter_Page

コントロールソース

="(" & [Page] & "/" & [Pages] & ")"

テキストボックス10

名前

txtReportFooter_Total

コントロールソース

=Sum([単価])

 

6 メニューからコードのアイコンをクリックして、レポートモジュールを表示させます。CH7-1.mdbを開いてrptEventのモジュールをコピーして貼り付けます。レポートモジュールのソースコードは、リスト7-1-2を参照してください。CH7-1.mdbから、モジュールbasEvents, basMyLibをコピーします。(CH7-1.mdbのデータベースウィンドウからモジュールをドラッグして、作業フォルダのCH7-1.mdbのデータベースウィンドウに貼り付けるとコピーされます。)

 

7 サンプルレポートをrptEventの名称で保存したら、Access を終了させます。

 

rptEventのレポートモジュールには、レポートでサポートしている各種イベントが登録されています。これらのイベントからは、イベントのログを取得するために、LogEvent_FSを呼びます。LogEvent_FSには、引数としてイベント名とイベントタイプを指定します。イベントタイプは、イベントの表示を制御するのに使用します。

 

LogEvent_FS "Report_Open(Cancel)", conFocus

 

LogEvent_FSでは、フォームfrmLogに登録されているAddItemメソッドを使用して、フォーム上のリストボックスにイベントを表示させます。

 

Public Sub LogEvent_FS(strEvent As String, Optional intEventType As Integer = 0)

  On Error Resume Next

  Forms("frmLog").AddItem strEvent, intEventType

  On Error GoTo 0

End Sub

 

 

レポートrptEventに登録されているイベントの種類:

Report_Activate(),Report_Deactivate(),Report_Error(),Report_Open(),Report_Close(),

Report_Page(),ReportHeader_Format(),ReportHeader_Print(),ReportFooter_Format(),

ReportFooter_Print(),PageHeader_Format(),PageHeader_Print(),PageFooter_Format(),

PageFooter_Print(),GroupHeader_Format(),GroupHeader_Print(),GroupFooter_Format(),GroupFooter_Print(),Detail_Format(),Detail_Print()

 

リスト7-1-2 rptEventのモジュール

Option Compare Database

Option Explicit

 

Dim mfDetailPrint As Boolean

Dim mfDetailFormat As Boolean

 

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

  If Not mfDetailFormat Then

    mfDetailFormat = True

    LogEvent_FS "Detail_Format(Cancel=" & Cancel & _

      ", FormatCount=" & FormatCount & ") * N times", conDetail

  End If

End Sub

 

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)

  If Not mfDetailPrint Then

    mfDetailPrint = True

    LogEvent_FS "Detail_Print(Cancel:" & Cancel & _

      ", PrintCount=" & PrintCount & ") * N times", conDetail

  End If

End Sub

 

Private Sub Detail_Retreat()

  LogEvent_FS "Detail_Retreat()", conDetail

End Sub

 

Private Sub GroupFooter_Format(Cancel As Integer, FormatCount As Integer)

  LogEvent_FS "GroupFooter_Format(Cancel=" & Cancel & _

    ", FormatCount=" & FormatCount & "," & Me.txtGroupName & ")", conGroupFooter

End Sub

 

Private Sub GroupFooter_Print(Cancel As Integer, PrintCount As Integer)

  LogEvent_FS "GroupFooter_Print(Cancel=" & Cancel & _

    ", PrintCount=" & PrintCount & "," & Me.txtGroupName & ")", conGroupFooter

End Sub

 

Private Sub GroupFooter_Retreat()

  LogEvent_FS "GroupFooter_Retreat()", conGroupFooter

End Sub

 

Private Sub GroupHeader_Format(Cancel As Integer, FormatCount As Integer)

  mfDetailFormat = False

  LogEvent_FS "GroupHeader_Format(Cancel=" & Cancel & _

    ", FormatCount=" & FormatCount & "," & Me.txtGroupName & ")", conGroupHeader

End Sub

 

Private Sub GroupHeader_Print(Cancel As Integer, PrintCount As Integer)

  mfDetailPrint = False

  LogEvent_FS "GroupHeader_Print(Cancel=" & Cancel & _

    ", PrintCount=" & PrintCount & "," & Me.txtGroupName & ")", conGroupHeader

End Sub

 

Private Sub GroupHeader_Retreat()

  LogEvent_FS "GroupHeader_Retreat()", conGroupHeader

End Sub

 

Private Sub PageFooter_Format(Cancel As Integer, FormatCount As Integer)

  LogEvent_FS "PageFooter_Format(Cancel=" & Cancel & _

    ", FormatCount=" & FormatCount & ",Page=" & Me.Page & "/" & Me.Pages _

    & ")", conPageFooter

  If Not mfDetailPrint Then

    LogEvent_FS "----------------------------------------------------------", conAddLine

  End If

End Sub

 

Private Sub PageFooter_Print(Cancel As Integer, PrintCount As Integer)

  LogEvent_FS "PageFooter_Print(Cancel=" & Cancel & _

    ", PrintCount=" & PrintCount & ",Page=" & Me.Page & "/" & Me.Pages _

    & ")", conPageFooter

  LogEvent_FS "----------------------------------------------------------", conAddLine

End Sub

 

Private Sub PageHeader_Format(Cancel As Integer, FormatCount As Integer)

  mfDetailFormat = False

  LogEvent_FS "PageHeader_Format(Cancel=" & Cancel & _

    ", FormatCount=" & FormatCount & ",Page=" & Me.Page & "/" & Me.Pages _

    & ")", conPageHeader

End Sub

 

Private Sub PageHeader_Print(Cancel As Integer, PrintCount As Integer)

  mfDetailPrint = False

  LogEvent_FS "PageHeader_Print(Cancel=" & Cancel & _

    ", PrintCount=" & PrintCount & ",Page=" & Me.Page & "/" & Me.Pages _

    & ")", conPageHeader

End Sub

 

Private Sub Report_Activate()

  LogEvent_FS "Report_Activate()", conFocus

End Sub

 

Private Sub Report_Close()

  LogEvent_FS "Report_Close()", conFocus

End Sub

 

Private Sub Report_Deactivate()

  LogEvent_FS "Report_Deactivate()", conFocus

End Sub

 

Private Sub Report_Error(DataErr As Integer, Response As Integer)

  LogEvent_FS "Report_Error(DataErr, Response)", conMisc

End Sub

 

Private Sub Report_NoData(Cancel As Integer)

  LogEvent_FS "Report_NoData(Cancel)", conMisc

End Sub

 

Private Sub Report_Open(Cancel As Integer)

  LogEvent_FS "Report_Open(Cancel)", conFocus

  SetAppTitle_FS "Event Log Demo (C) " & Year(Date) & " by Akio Kasai"

End Sub

 

Private Sub Report_Page()

  LogEvent_FS "Report_Page()", conMisc

End Sub

 

Private Sub ReportFooter_Format(Cancel As Integer, FormatCount As Integer)

  LogEvent_FS "ReportFooter_Format(Cancel=" & Cancel & _

    ", FormatCount=" & FormatCount & ")", conReportFooter

End Sub

 

Private Sub ReportFooter_Print(Cancel As Integer, PrintCount As Integer)

  LogEvent_FS "ReportFooter_Print(Cancel=" & Cancel & _

    ", PrintCount=" & PrintCount & ")", conReportFooter

End Sub

 

Private Sub ReportFooter_Retreat()

  LogEvent_FS "ReportFooter_Retreat()", conReportFooter

End Sub

 

Private Sub ReportHeader_Format(Cancel As Integer, FormatCount As Integer)

  LogEvent_FS "ReportHeader_Format(Cancel=" & Cancel & _

    ", FormatCount=" & FormatCount & ")", conReportHeader

End Sub

 

Private Sub ReportHeader_Print(Cancel As Integer, PrintCount As Integer)

  LogEvent_FS "ReportHeader_Print(Cancel=" & Cancel & _

    ", PrintCount=" & PrintCount & ")", conReportHeader

End Sub

 

Private Sub ReportHeader_Retreat()

  LogEvent_FS "ReportHeader_Retreat()", conReportHeader

End Sub

 

 

● レポートのイベントを表示させるフォームを作成するには

 

1 Access を起動したら、作業フォルダに作成したCH7-1.mdbを開きます。

 

2 データベースウィンドウからフォームをクリックしたら、一覧からデザインビューでフォームを作成するをダブルクリックします。フォームのデザインビューが表示されたら、ツールボックスを表示させます。ツールボックスからリストボックスのアイコンをクリックして、フォーム詳細の右側に配置します。ツールボックスから、コマンドボタンのアイコンをクリックしたら、リストボックスの左に3個のコマンドボタン(上から順番に、Clear, Open,Close)を作成します。ツールボックスからオプショングループのアイコンをクリックしたら、コントロールウィザードを利用して、2個のトグルボタンを作成します。ツールボックスからチェックボックスのアイコンをクリックしたら、リストボックスの下に7個のチェックボックスを作成します。ツールボックスから、四角形のアイコンをクリックしたら、チェックボックスを四角形で囲みます。最後に、ツールボックスからラベルのアイコンをクリックしたら、四角形の左側に配置して標題にFilter Events:を入力します。このフォームでは、タイマを使用しますのでフォームのプロパティを表示させたら、タイマ間隔に5000(5秒)を設定します。この設定によりタイマ時のイベントには、5秒間隔で定期的に制御が渡ります。フォームに作成したコントロールのプロパティは、表7-1-2のように設定します。

 

7-1-2 フォームに作成したコントロールのプロパティ

コントロールの種類

プロパティ

リストボックス

名前

lstLog

値集合タイプ

FillLog

コマンドボタン1

名前

cmdClear

コマンドボタン2

名前

cmdOpen

コマンドボタン3

名前

cmdClose

オプショングループ

名前

grpStartStop

既定値

1

 

 

トグルボタン

標題

オプション値

Start

1

Stop

2

 

 

チェックボックス1

名前

chkReportHeaderFooter

チェックボックス2

名前

chkPageHeaderFooter

チェックボックス3

名前

chkGroupHeaderFooter

チェックボックス4

名前

chkDetail

チェックボックス5

名前

chkFocus

チェックボックス6

名前

chkTimer

チェックボックス7

名前

chkMisc

四角形

立体表示

枠囲み

ラベル

標題

Filter Events:

フォーム

タイマ間隔

5000(5秒)

 

 

7-1-6 レポートのイベントを表示するフォームのレイアウト

 

3 メニューからコードのアイコンをクリックしてフォームモジュールを表示させます。CH7-1.mdbを開いたら、frmLogのフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト7-1-3を参照してください。

 

4 フォームをビューモードで表示させたら、Openのコマンドボタンをクリックしてサンプルレポートをプレビュー印刷モードで開きます。図7-1-7のように、レポートのイベントが発生順に番号付けされてリストボックス上に表示されます。行001のReportHeader_Formatは、レポートのフォーマット時のイベントを意味します。イベント名の()は、引数を意味します。行番号001~021までは、引数Pageの分子に、ページ番号が表示されていますが、分母の合計ページ数は0になっています。これらのフォーマットイベントは、Accessがレポートの合計ページ数を計算していることを意味します。行番号025~026のイベントでは、Page=1/4のように表示されていますが、これはレポートの合計ページ数が決定したことを意味します。レポートで="(" & [Page] & "/" & [Pages] & ")"のように、Page/Pagesプロパティを使用して合計ページ数も表示させるように設定すると、フォーマット時のイベントには2回制御が渡ります。

 

フォーム最下位のチェックボックスをクリックすることにより、リストボックスに表示されるイベントを制御することができます。例えば、Group Header/Footerのイベントのみ表示させたいときは、その他のイベントのチェックを外して、Group Header/Footerにチェックを付けます。

 

7-1-7 レポートのイベントシーケンスがリストボックスに表示された例

 

5 フォームをfrmLogの名称で保存したらAccess を終了させます。

 

 

Form_Load()イベントの処理

このイベントは、フォームが開かれてデータをロードするときに発生します。このイベントでは、モジュールレベルのメモリ変数を初期化します。

 

 

Form_Close()イベントの処理

このイベントは、フォームが閉じられるときに発生します。このイベントでは、コレクションのメモリ変数を解放します。

 

 

Form_Resize()イベントの処理

このイベントは、フォームのサイズを変更したときに発生します。このイベントでは、フォームサイズに合わせて、リストボックスの幅を自動調整します。

 

  lstLog.Width = Me.WindowWidth - 1440

  lstLog.ColumnWidths = lstLog.Width

 

 

Form_Timer()イベントの処理

このイベントは、タイマ間隔で設定した時刻になると発生します。このイベントでは、リストボックスに5秒間隔で境界線(------)を表示します。

 

 

cmdClear_Click()イベントの処理

このイベントは、フォームからClearボタンをクリックしたときに発生します。このイベントでは、イベントを格納するコレクション変数mcolLogItemsを初期化します。

 

 

cmdOpen_Click()イベントの処理

このイベントは、フォームからOpenのコマンドボタンをクリックしたときに発生します。このイベントでは、DoCmdOpenReportメソッドでサンプルレポートをプレビュー印刷モードで開きます。

 

 

cmdClose_Click()イベントの処理

このイベントは、フォームからCloseのボタンをクリックしたときに発生します。このイベントでは、DoCmdCloseメソッドでサンプルレポートを閉じます。

 

 

grpStartStop_AfterUpdate()イベントの処理

このイベントは、オプショングループからStart/Stopのトグルボタンをクリックしたときに発生します。このイベントでは、フォームのタイマを使用してリストボックスにレポートのイベントを表示させる処理を開始/停止します。タイマ間隔に0を設定すると、イベントの表示が停止されます。タイマ間隔に5000を設定すると5秒間隔で、イベントを表示します。

 

 

FillLog()関数

この関数は、リストボックスの値集合タイプに指定されていて、リストボックスが再クエリされたときに実行されます。この関数では、コレクション変数mcolLogItemsに格納されているレポートのイベントをリストボックスに表示します。Select Case… End Selectでは、引数intCodeに対応した処理を行います。acLBInitializeの条件では、AddItemToListを呼び出して、mvarNewItemに格納されているイベントをコレクション変数mcolLogItemsに追加します。acLBGetRowCountの条件では、コレクションのアイテム数を返します。acLBGetValueの条件では、コレクション変数に格納されているアイテムを順番に返します。

 

  Select Case intCode

    Case acLBInitialize

      AddItemToList

      ctl = mcolLogItems.Count - 1

      FillLog = True

    Case acLBOpen

      FillLog = Timer

    Case acLBGetRowCount

      FillLog = mcolLogItems.Count

    Case acLBGetValue

      FillLog = mcolLogItems(lngRow + 1)

  End Select

 

 

AddItemメソッド

このメソッドは、フォーム独自に追加したメソッドでLogEvent_FSから呼ばれます。

 

  Forms("frmLog").AddItem strEvent, intEventType

 

AddItemメソッドは、OkToAdd()関数を呼んで、引数で指定されたイベントを表示してよいか調べます。OkToAdd()からTrueが返されたときは、イベントに3桁のシーケンス番号を付加してリストボックスに表示します。Me.lstLog.Requeryで、リストボックスを再クエリすると、値集合タイプに指定されているFillLogが実行されます。FillLog()では、mvarNewItemに格納されているイベントを、コレクション変数mcolLogItemsに追加してリストボックスに表示します。

 

  If OkToAdd(intEventType) Then

    mintSeqNo = mintSeqNo + 1

    mvarNewItem = Format(mintSeqNo, "000") & " " & varItem

    Me.lstLog.Requery

  End If

 

 

AddItemToList()

このサブプロシージャは、mvarNewItemに格納されているイベントをコレクション変数mcolLogItemsに追加します。コレクションにアイテムを追加するにはAddメソッド、アイテムを削除するにはRemoveメソッドを使用します。コレクションからアイテムを取得するには、Itemメソッドを使用します。

 

  If Len(mvarNewItem) Then

    mcolLogItems.Add mvarNewItem

    mvarNewItem = vbNullString

  End If

 

 

OkToAdd()関数

この関数は、引数で指定されたイベントを表示するか調べてTrue/Falseを返します。フォームのリストボックスに表示させるイベントは、チェックボックスでON/OFFに設定することにより自由に制御することができます。

 

リスト7-1-3 frmLogのフォームモジュール

Option Compare Database

Option Explicit

 

Dim mcolLogItems As New Collection

Dim mvarNewItem As Variant

Dim mintSeqNo As Integer

Dim mvarSeqNo As Variant

 

Private Sub AddItemToList()

  If Len(mvarNewItem) Then

    mcolLogItems.Add mvarNewItem

    mvarNewItem = vbNullString

  End If

End Sub

 

Private Sub cmdClear_Click()

  Set mcolLogItems = New Collection

  mvarNewItem = vbNullString

  Me.lstLog.Requery

End Sub

 

Private Function FillLog(ctl As Control, _

  lngID As Long, lngRow As Long, _

  lngCol As Long, intCode As Integer) As Variant

  Select Case intCode

    Case acLBInitialize

      AddItemToList

      ctl = mcolLogItems.Count - 1

      FillLog = True

    Case acLBOpen

      FillLog = Timer

    Case acLBGetRowCount

      FillLog = mcolLogItems.Count

    Case acLBGetValue

      FillLog = mcolLogItems(lngRow + 1)

  End Select

End Function

 

Private Sub cmdClose_Click()

  DoCmd.Close acReport, "rptEvent"

End Sub

 

Private Sub cmdOpen_Click()

  DoCmd.OpenReport "rptEvent", acViewPreview

End Sub

 

Private Sub Form_Close()

  Set mcolLogItems = Nothing

End Sub

 

Private Sub Form_Load()

  mintSeqNo = 0

End Sub

 

Private Sub Form_Resize()

  On Error Resume Next

  lstLog.Width = Me.WindowWidth - 1440

  lstLog.ColumnWidths = lstLog.Width

End Sub

 

Public Sub AddItem(ByVal varItem As Variant, ByVal intEventType As Integer)

  If OkToAdd(intEventType) Then

    mintSeqNo = mintSeqNo + 1

    mvarNewItem = Format(mintSeqNo, "000") & " " & varItem

    Me.lstLog.Requery

  End If

End Sub

 

Private Function OkToAdd(intEventType As Integer) As Boolean

  Dim fShowIt As Boolean

 

  If Me.grpStartStop = 1 Then ' Start Log

    Select Case intEventType

      Case conReportHeader, conReportFooter

        fShowIt = Me.chkReportHeaderFooter

      Case conPageHeader, conPageFooter

        fShowIt = Me.chkPageHeaderFooter

      Case conGroupHeader, conGroupFooter

        fShowIt = Me.chkGroupHeaderFooter

      Case conDetail

        fShowIt = Me.chkDetail

      Case conFocus

        fShowIt = Me.chkFocus

      Case conMisc

        fShowIt = Me.chkMisc

      Case conAddLine

        fShowIt = True

      Case Else

        fShowIt = False

    End Select

  Else

    fShowIt = False

  End If

  OkToAdd = fShowIt

End Function

 

Private Sub Form_Timer()

  If Me.chkTimer Then

    mintSeqNo = 0

    mvarNewItem = "-----------------------------------------------------------"

    Me.lstLog.Requery

  End If

End Sub

 

Private Sub grpStartStop_AfterUpdate()

  If Me.grpStartStop = 1 Then

    Me.TimerInterval = 5000 ' 5 Sec

  Else

    Me.TimerInterval = 0    ' ReSet Timer

  End If

End Sub

 

ダウンロード (CH7-1.lzh)
Accessお手本データベースのホームへ戻る