請求書を業者指定伝票に印刷するお手本データベース

図5-1-1 請求書を業者指定伝票に印刷するサンプルデータベース
このサンプルデータベースは、請求書を業者が指定した専用伝票に印刷します。請求書には、受注コード別にアイテム明細が印刷されます。レポートのページヘッダーには、請求先、御請求額、ページ番号(受注コード別のカレントページと合計ページ)、受注コード、得意先コード、担当社員、締切日、出荷日、運送会社が印刷されます。御請求額は、先頭ページにのみ印字します。レポートの明細には、商品コード、商品名、数量、単価、割引、金額が印刷されます。ページフッターには、ページ番号、小計、消費税、合計が印刷されます。ページフッターの小計、消費税、合計は、最終ページにのみ印字します。サンプルデータベースのように、グループ(この例では受注コード)単位のページ番号(カレント/最終ページ番号)を取得すれば、レポートに印字される内容を自由に制御することができます。
サンプルデータベース(CH5-1.mdb)では、以下に示すノウハウを習得することができます。
◆ グループ単位のページ番号(カレント/最終ページ)を印字する方法
◆ レポートに配置されている複数のコントロールを一括して印字したり、印字を抑止する方法
◆ レポートのイベントシーケンスをトレースする方法
◆ 関数から複数の戻り値を返す方法(カレント/最終ページ)
◆ データベースにリンクされているテーブルが壊れていないか調べて、自動リンクする方法
◆ Windowsのコモンダイアログを表示する方法
● サンプルデータベースで使用するテーブルを準備するには
1 Access を起動したら作業フォルダに、新規データベースCH5-1.mdbを作成します。
2 メニューから外部データの取り込み、テーブルのリンクをクリックします。リンクのダイアログが表示されたら、Accessのサンプルデータベース Northwind.mdbを選択してリンクボタンをクリックします。(Northwind.mdbは、デフォルトでは”C:\Program Files\Microsoft Office\Office\Samples”にインストールされます。)
3 テーブルのリンクのダイアログが表示されたら、すべて選択のボタンをクリックします。最後にOKボタンをクリックしてリンクを完了させます。

図5-1-2 Northwind.mdbの全てのテーブルをリンクさせる
4 テーブルをリンクしたらデータベースウィンドウにNorthwind.mdbの全てのテーブルが表示されているか確認して、Access を終了させます。

図5-1-3 CH5-1.mdbのデータベースからNorthwind.mdbのテーブルにリンク
1 Access を起動したら作業フォルダに作成したCH5-1.mdbを開きます。
2 データベースウィンドウからフォーム
をクリックしたら、一覧からデザインビューでフォームを作成するをダブルクリックします。フォームのデザインビューが表示されたら、ツールボックスからコマンドボタンのアイコン
をクリックしてフォーム中央に配置します。コマンドボタンのプロパティを表示させたら、コントロール名にcmdPrint、標題に“請求書印刷”を設定します。次に、ツールボックスからラベルのアイコン
をクリックして、コマンドボタンの下に配置します。ラベルの標題には、表5-1-1に示すような説明を入力します。
表5-1-1 フォームに作成したコントロールのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
コマンドボタン |
名前 |
cmdPrint |
|
標題 |
請求書印刷 |
|
|
ラベル |
標題 |
請求書を業者指定伝票に印刷します。 ・請求額を先頭ページに印字 ・小計/消費税/合計を最終ページに印字 ・用紙サイズは連続用紙 15 x 6 インチ を指定してください |
|
背景色 |
14286847 |
|
|
立体表示 |
くぼみ |
3 メニューからコードのアイコン
をクリックしてフォームモジュールを表示させます。CH5-1.mdbを開いたら、frmInvoiceのフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト5-1-1を参照してください。 CH5-1.mdbを開いたら、モジュールbasLinkedTables, basMyLib, basWindowsCommonDialogをインポートします。
4 フォームをfrmInvoiceの名称で保存したら、Access を終了させます。
Sub Form_Open()イベントの処理
このイベントは、フォームを開いたときに実行されます。このイベントでは、basLinkedTablesモジュールに登録されているVerifyLinks_FS()関数を使用して得意先テーブルのリンクが壊れていないか調べて、壊れているとき再リンクします。リンクされているテーブルが壊れているときは、basWindowsCommonDialogモジュールに登録されているOpenFile_FS()関数を使用して、新しいリンク先のデータベースのフルパス名を取得します。VerifyLinks_FS()、OpenFile_FS()関数の詳細は、CH5-1.mdbのbasLinkedTables、basWindowsCommonDialogを参照してください。
Sub cmdPrint_Click()イベントの処理
このイベントは、請求書印刷のコマンドボタンをクリックしたときに実行されます。このイベントでは、DoCmdのOpenReportメソッドにレポート名を指定してプレビューモード(acViewPreview)で請求書を印刷します。
DoCmd.OpenReport "rptInvoice",
acViewPreview
リスト5-1-1 frmInvoiceのフォームモジュール
|
Option Compare Database Option Explicit Private Sub cmdPrint_Click() DoCmd.OpenReport "rptInvoice", acViewPreview End Sub Private Sub Form_Open(Cancel As Integer) If Not VerifyLinks_FS("Northwind.mdb", "得意先") Then MsgBox "テーブルの再リンクに失敗しました!" & vbCrLf & _ "Accessのリンクテーブルマネージャから" & _ " Northwind.mdb を再リンクしてください.", _ vbCritical + vbOKOnly End If Call SetAppTitle_FS("My Invoice (C) " _ & Year(Date) & " by Akio Kasai") End Sub |
1 Access を起動したら作業フォルダに作成したCH5-1.mdbを開きます。
2 データベースウィンドウからクエリ
をクリックしたら、一覧からデザインビューでクエリを作成するをダブルクリックします。テーブルの表示ダイアログが表示されたら閉じるのボタンをクリックして閉じます。メニューからSQLのアイコン
をクリックしてSQLビューのウィンドウを表示させたら、リスト5-1-2を入力します。(入力データが多いのでのCH5-1.mdbからqryInvoiceをインポートしてもかまいません。)クエリをデザインビューに切り替えたら、図5-1-4のようになっているか確認します。クエリをqryInvoiceの名称で保存して閉じます。qryInvoiceでは、受注日の抽出条件にBetween #96/01/01# And #96/01/31#を設定して1996年1月1日~1996年1月31日までの受注データが表示されるようにしています。
リスト5-1-2 qryInvoiceのSQLコマンド
|
SELECT DISTINCTROW 受注.得意先コード, 得意先.得意先名, 得意先.郵便番号, 得意先.都道府県, 得意先.住所1, 得意先.住所2, 社員.氏名, 受注.受注コード, 受注.受注日, 受注.締切日, 受注.出荷日, 運送会社.運送会社, 受注明細.商品コード, 商品.商品名, 受注明細.単価, 受注明細.数量, 受注明細.割引, CCur([受注明細].[単価]*[数量]*(1-[割引])/100)*100 AS 明細金額, 受注.運送料 FROM 得意先 INNER JOIN (商品 INNER JOIN ((社員 INNER JOIN (運送会社 INNER JOIN 受注 ON 運送会社.運送コード = 受注.運送区分) ON 社員.社員コード = 受注.社員コード) INNER JOIN 受注明細 ON 受注.受注コード = 受注明細.受注コード) ON 商品.商品コード = 受注明細.商品コード) ON 得意先.得意先コード = 受注.得意先コード WHERE (((受注.受注日) Between #1/1/1996# And #1/31/1996#)); |
図5-1-4 qryInvoiceをデザインビューで表示した例
3 データベースウィンドウからレポート
をクリックしたら、新規作成ボタンをクリックします。レポートの新規作成ダイアログが表示されたら、リストボックスの一覧からデザインビューを選択します。基になるテーブル/クエリのコンボボックスからqryInvoiceを選択したらOKボタンをクリックします。レポートのデザインビューが表示されたら、並べ替え/グループ化のアイコン
をクリックしてダイアログを表示させます。ダイアログのフィールド/式のコンボボックスをクリックして受注コードを選択します。グループプロパティのグループヘッダー/グループフッターを“はい”に設定します。その他のプロパティは、デフォルト値を採用します。2行目のフィールド/式のコンボボックスから商品コードをクリックします。グループプロパティは、デフォルト値を採用します。ダイアログの閉じるのボタンをクリックして、ダイアログを閉じます。
4 ツールボックスからイメージのアイコン
をクリックしてページヘッダーの左上に貼り付けます。図の挿入のダイアログが表示されたら、CH5-1のフォルダからLogo.tifを選択して会社ロゴを埋め込みます。イメージのサイズを調整してロゴ全体が表示されるようにします。ツールボックスからラベルのアイコン
をクリックしてイメージの右に配置したら、“請求書”を入力します。ラベルのプロパティを表示させたら、フォントサイズを20、フォントの太さを太字に設定します。ツールボックスから直線のアイコン
をクリックしたら、会社ロゴの下に配置します。直線のプロパティを表示させたら、境界線幅を2ポイントに設定します。ツールボックスからラベルのアイコンをクリックして直線の下に配置したら、Office Supply Co.の住所を入力します。
〒340-0199 埼玉県幸手市1-2-3
TEL: (0480)40-13xx FAX: (0480)40-13xx
ツールボックスからテキストボックスのアイコン
をクリックしたら、直線の右下に配置します。テキストボックスのプロパティを表示させたら、コントロールソースに=Format(Date(),"日付 (L)")を埋め込みます。
5 ツールボックスからテキストボックスのアイコンをクリックして、得意先名、郵便番号、住所1、住所2のテキストボックスを作成します。得意先名のコントロールソースには、得意先テーブルのフィールド名“得意先名”を設定して連結させます。郵便番号のコントロールソースには、="〒 " & [郵便番号]を埋め込みます。住所1のコントロールソースには、=IIf([都道府県] Is Null," " & [住所1],[都道府県] & " " & [住所1])を埋め込みます。住所2のコントロールソースには、得意先テーブルのフィールド名“住所2”を設定して連結させます。
ツールボックスからテキストボックスのアイコンをクリックして、御請求額のテキストボックスを作成します。テキストボックスのプロパティを表示させて、コントロール名に“txtPrg請求額”を設定します。グループ別のページ番号を表示するテキストボックスを作成したら、プロパティを表示させてコントロール名に、“txtPrgGroupPages”を設定します。
6 図5-1-6の請求書ヘッダー部の分解図を参考にしてレポートのヘッダー部を作成します。メニューからフィールドリストのアイコン
をクリックして、qryInvoiceのフィールドリストを表示させます。フィールドリストから受注コードをドラッグしてページヘッダーに配置します。ラベルのプロパティを表示させたら、前景色に16777215(白)を設定します。同様の手順で、フィールドリストから、得意先コード、氏名(担当社員)、受注日、締切日、出荷日、運送会社をドラッグしてレポートに配置します。ラベルのプロパティを表示させたら、前景色を16777215(白)に設定します。
ツールボックスから四角形のアイコン
をクリックしたら、請求書のヘッダー部を囲みます。四角形のプロパティを表示させたら、背景スタイルを透明に設定します。ツールボックスから直線のアイコンをクリックしたら、受注コードと得意先コードの間に垂直線を引きます。同様の手順でフィールドの境界に垂直線を引きます。ツールボックスから四角形のアイコンをクリックしたら、四角形のラベルの部分と同じサイズの四角形を作成してラベル部分に重ねます。四角形のプロパティを表示させたら、背景色に8388608(濃青)を設定します。
7 請求書のヘッダーを作成したら、請求書の明細行を作成します。ツールボックスからテキストボックスのアイコンをクリックしたら、レポートの詳細に配置します。ラベルの標題に“商品コード”を設定します。テキストボックスのプロパティを表示させたら、データコントロールをクリックしてコンボボックスから商品コードを選択します。ラベルをクリックしたら、マウスの右ボタンをクリックしてショートカットメニューを表示させて切り取って、ページヘッダーに貼り付けます。ラベルを商品コードのテキストボックスの上に移動します。メニューからフィールドリストのアイコンをクリックしてqryInvoiceのフィールドリストを表示させます。フィールドリストから、商品名をドラッグしたら詳細の商品コードの右にドラッグします。ラベルの標題に“商品名”、前景色に16777215(白)を設定します。ラベルをページヘッダーに移動したら、商品名のテキストボックスの上に配置します。同様の手順で、フィールドリストから数量、単価、割引、明細金額をドラッグしてレポートに配置します。ツールボックスから四角形のアイコンをクリックしたら、ページヘッダーに配置して明細行のラベルを囲みます。四角形のプロパティを表示させたら、背景色に8388608(濃青)を設定します。
8 グループの受注コードフッターに明細金額の小計を集計するテキストボックスと、消費税を計算するテキストボックスを作成します。ツールボックスからテキストボックスのアイコンをクリックしたら、受注コードフッターに配置します。ラベルは不要ですから削除します。テキストボックスのプロパティを表示させたら、コントロール名にtxtGrp小計を設定します。コントロールソースに、=Sum([明細金額])を埋め込んだら可視プロパティを“いいえ”に設定します。同様の手順で消費税のテキストボックスを配置したらプロパティを表示させて、コントロール名にtxtGrp消費税を設定します。コントロールソースに、=[txtGrp小計]*0.05を埋め込んだら可視プロパティを“いいえ”に設定します。受注コードフッターに配置した、明細金額小計と消費税のテキストボックスは、ページフッターで小計、消費税、合計を印字するときに使用します。
9 最後に、ページフッターにレポートのページ番号と小計、消費税、合計のテキストボックスを作成します。小計、消費税、合計欄は、請求書の最終ページにのみ印字しますので、タブコントロール上に配置して最終ページ以外には印字されないように制御します。ツールボックスからテキストボックスのアイコンをクリックしたら、ページフッターの左に配置します。プロパティを表示させたら、コントロールソースに=[Page] & "/" & [Pages]を埋め込みます。ツールボックスからタブコントロールのアイコン
をクリックしたら、ページフッターの右側に配置します。デフォルトで2ページ分のタブが作成されますので1ページ削除します。タブコントロールのプロパティを表示させたら、コントロール名にtabPageFooterを設定します。更に、背景スタイルを“透明”、スタイルを“なし”に設定します。これで、タブコントロールが四角形のようなコントロールに変身します。このタブコントロールは、合計欄に印刷される小計、消費税、合計を一括して印刷したり、印刷を抑止するのに利用します。ツールボックスからテキストボックスのアイコンをクリックしたら、タブコントロールに配置します。ラベルの標題に、“小計:”を設定します。テキストボックスのコントロールソースに=[txtGrp小計]を埋め込みます。消費税のテキストボックスを配置したら、ラベルの標題に“消費税:”を設定します。テキストボックスのコントロールソースに=[txtGrp消費税]を埋め込みます。合計のテキストボックスを配置したら、ラベルの標題に“合計:”を設定します。テキストボックスのコントロールソースに=[txtPrg小計]+[txtPrg消費税]を埋め込みます。
表5-1-2 レポートに配置したコントロールのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
イメージ |
ピクチャ |
CH5-1のフォルダにあるLogo.tifファイル |
|
ピクチャタイプ |
埋め込み |
|
|
OLEサイズ |
クリップ |
|
|
ピクチャ位置 |
中央 |
|
|
ラベル |
標題 |
請求書 |
|
フォントサイズ |
20 |
|
|
フォント太さ |
太字 |
|
|
直線(水平線) |
境界線幅 |
2ポイント |
|
ラベル(住所) |
標題 |
〒340-0199 埼玉県幸手市1-2-3 TEL: (0480)40-13xx FAX: (0480)40-13xx |
|
テキストボックス(日付) |
コントロールソース |
=Format(Date(),"日付 (L)") |
|
テキストボックス(得意先名) |
コントロールソース |
得意先名 |
|
テキストボックス(郵便番号) |
コントロールソース |
="〒 " & [郵便番号] |
|
テキストボックス(住所1) |
コントロールソース |
=IIf([都道府県] Is Null," " & [住所1],[都道府県] & " " & [住所1]) |
|
テキストボックス(住所2) |
コントロールソース) |
住所2 |
|
テキストボックス(御請求額) |
名前 |
txtPrg請求額 |
|
テキストボックス(グループ単位のページの番号) |
名前 |
txtPrgGroupPages |
|
ラベル/テキストボックス |
標題 |
受注コード |
|
前景色(ラベル) |
16777215 |
|
|
コントロールソース |
受注コード |
|
|
ラベル/テキストボックス |
標題 |
得意先コード |
|
前景色(ラベル) |
16777215 |
|
|
コントロールソース |
得意先コード |
|
|
ラベル/テキストボックス |
標題 |
担当社員 |
|
前景色(ラベル) |
16777215 |
|
|
コントロールソース |
氏名 |
|
|
ラベル/テキストボックス |
標題 |
受注日 |
|
前景色(ラベル) |
16777215 |
|
|
コントロールソース |
受注日 |
|
|
ラベル/テキストボックス |
コントロールソース |
締切日 |
|
前景色(ラベル) |
16777215 |
|
|
コントロールソース |
締切日 |
|
|
ラベル/テキストボックス |
標題 |
出荷日 |
|
前景色(ラベル) |
16777215 |
|
|
コントロールソース |
出荷日 |
|
|
ラベル/テキストボックス |
標題 |
運送会社 |
|
前景色(ラベル) |
16777215 |
|
|
コントロールソース |
運送会社 |
|
|
四角形(背景色用) |
名前 |
boxBackgroundBox1 |
|
|
背景色 |
8388608 |
|
四角形(罫線用) |
名前 |
baxBackgroundBox2 |
|
背景スタイル |
透明 |
|
|
直線(垂直線) |
境界線色 |
8388608 |
|
ラベル/テキストボックス |
標題 |
商品コード |
|
前景色(ラベル) |
8388608 |
|
|
コントロールソース |
商品コード |
|
|
ラベル/テキストボックス |
標題 |
商品名 |
|
前景色(ラベル) |
8388608 |
|
|
コントロールソース |
商品名 |
|
|
ラベル/テキストボックス |
標題 |
数量 |
|
前景色(ラベル) |
8388608 |
|
|
コントロールソース |
数量 |
|
|
ラベル/テキストボックス |
標題 |
単価 |
|
前景色(ラベル) |
8388608 |
|
|
コントロールソース |
単価 |
|
|
ラベル/テキストボックス |
標題 |
割引 |
|
前景色(ラベル) |
8388608 |
|
|
コントロールソース |
割引 |
|
|
ラベル/テキストボックス |
標題 |
明細金額 |
|
前景色(ラベル) |
8388608 |
|
|
コントロールソース |
明細金額 |
|
|
四角形(背景色用) |
名前 |
boxBackgroundBox3 |
|
背景色 |
8388608 |
|
|
テキストボックス |
名前 |
txtGrp小計 |
|
コントロールソース |
=Sum([明細金額]) |
|
|
可視 |
いいえ |
|
|
テキストボックス |
名前 |
txtGrp消費税 |
|
コントロールソース |
=[txtGrp小計]*0.05 |
|
|
可視 |
いいえ |
|
|
テキストボックス |
名前 |
txtPrgTotalPages |
|
コントロールソース |
=[Page] & "/" & [Pages] |
|
|
タブコントロール |
名前 |
tabPageFooter |
|
背景スタイル |
透明 |
|
|
スタイル |
なし |
|
|
ラベル/テキストボックス |
標題 |
小計: |
|
名前 |
txtPrg小計 |
|
|
コントロールソース |
=[txtGrp小計] |
|
|
ラベル/テキストボックス |
標題 |
消費税: |
|
名前 |
txtPrg消費税 |
|
|
コントロールソース |
=[txtGrp消費税] |
|
|
ラベル/テキストボックス |
標題 |
合計: |
|
名前 |
txtPrg合計 |
|
|
コントロールソース |
=[txtPrg小計]+[txtPrg消費税] |
|
|
ページヘッダー |
名前 |
PageHeader |
|
ページフッター |
名前 |
PageFooter |

図5-1-5 請求書を印刷するレポートのレイアウト

図5-1-6 請求書ヘッダー部の分解図
10 レポートのページヘッダー/ページフッターのプロパティを表示させたら、コントロール名にPageHeader/PageFooterを設定します。メニューからコードのアイコン
をクリックしてレポートモジュールを表示させます。CH5-1.mdbを開いたら、rptInvoiceのレポートモジュールをコピーして貼り付けます。レポートモジュールのリストは、リスト5-1-2を参照してください。メニューから印刷プレビューのアイコン
をクリックしてレポートをプレビューします。ページの移動ボタンをクリックして請求書のページ番号が請求書単位に印字されるか確認します。まは、御請求額は、先頭ページにのみ印字されることも確認します。合計欄は、請求書の最終ページにのみ印字されることも確認します。
11 請求書が正常に印刷されることが確認できたら、レポートをrptInvoiceの名称で保存して、Access を終了します。
Sub PageHeader_Format()イベントの処理
このイベントは、レポートのページヘッダーをフォーマットするときに実行されます。尚、レポートのPagesプロパティを使用しているときは、合計ページ数を計算するためこのイベントには2回制御が渡ります。1回目のパスのときは、Pagesプロパティに0が設定されています。2回目のパスのときは、Pagesプロパティに合計ページ数が設定されています。PageHeader/PageFooterのイベントシーケンスについては、後述するTipを参照してください。
このイベントでは、GroupPages_FS()関数を使用してグループ単位(受注コード)のカレントページ番号と合計ページ数を取得してモジュールレベルのメモリ変数mintPageとmintPagesに保存します。
With GroupPages_FS(Me, "受注コード")
mintPage = .Page
mintPages = .Pages
End With
GroupPages_FS()関数の返り値には、Typeステートメントで定義した構造体が返されます。
Public Type GPage
Page As Integer
End Type
GroupPages_FS()関数で取得したページ番号をページヘッダーに配置されているテキストボックスに n/nnnの形式にて格納します。また、カレントページ番号を調べて、1ページ目なら請求額のテキストボックスに請求額を設定します。1ページ目以外なら、”*******”を設定します。
With Me
.txtPrgGroupPages = mintPage &
"/" & mintPages
If mintPage = 1 Then
.txtPrg請求額 = .txtGrp小計 + .txtGrp消費税
Else
.txtPrg請求額 = "**********"
End If
End With
Sub PageFooter_Format()イベントの処理
このイベントは、ページフッターをフォーマットするときに実行されます。このイベントでは、カレントページ番号と最終ページ番号を比較して、ページフッターに配置されている合計欄を印字すべきかどうか制御します。カレントページ番号が最終ページ番号のときは、タブコントロールの可視(Visible)プロパティを”True”に設定して合計欄を印字します。カレントページ番号が最終ページ番号以外のときは、可視プロパティに”False”を設定して合計欄の印字を抑止します。
Me.tabPageFooter.Visible =
IIf(mintPage = mintPages, True, False)
リスト5-1-2 rptInvoiceのレポートモジュール
|
Option Compare Database Option Explicit Dim mintPage As Integer Dim mintPages As Integer Private Sub PageFooter_Format( _ Cancel As Integer, FormatCount As Integer) Me.tabPageFooter.Visible = _ IIf(mintPage = mintPages, True, False) End Sub Private Sub PageHeader_Format( _ Cancel As Integer, FormatCount As Integer)
With GroupPages_FS(Me, "受注コード") mintPage = .Page mintPages = .Pages End With
With Me .txtPrgGroupPages = mintPage & "/" & mintPages If mintPage = 1 Then .txtPrg請求額 = .txtGrp小計 + .txtGrp消費税 Else .txtPrg請求額 = "**********" End If End With
End Sub |
GroupPages_FS()関数
この関数は、引数で指定されたグループのカレントページと合計ページを計算して返します。この関数では、レポートのPagesプロパティを参照して1回目のパスなら、配列変数にカレントページと合計ページ数を格納します。2回目のパスのときは、配列変数からカレントページと合計ページ数を取得して返します。
|
mavarGrpArrayPage()の内容 |
1 |
2 |
3 |
|
mavarGrpArrayPages()の内容 |
3 |
3 |
3 |
リスト5-1-3 GroupPages_FS()関数
|
Option Compare Database Option Explicit Public Type GPage Page As Integer Pages As Integer End Type Dim mavarGrpArrayPage() As Variant Dim mavarGrpArrayPages() As Variant Dim mvarGrpNameCurrent As Variant Dim mvarGrpNamePrevious As Variant Dim mintGrpPage As Integer Dim mintGrpPages As Integer Public Function GroupPages_FS( _ rpt As Report, strControlName As String) As GPage Dim intI As Integer
With rpt ' 2nd Pass If .Pages <> 0 Then intI = .Page With GroupPages_FS .Page = mavarGrpArrayPage(intI) .Pages = mavarGrpArrayPages(intI) End With Exit Function End If
' 1st Pass ReDim Preserve mavarGrpArrayPage(.Page + 1) ReDim Preserve mavarGrpArrayPages(.Page + 1) mvarGrpNameCurrent = rpt(strControlName).Value If mvarGrpNameCurrent = mvarGrpNamePrevious Then mavarGrpArrayPage(.Page) = mavarGrpArrayPage(.Page - 1) + 1 mintGrpPages = mavarGrpArrayPage(.Page) For intI = .Page - ((mintGrpPages) - 1) To .Page mavarGrpArrayPages(intI) = mintGrpPages Next intI Else mintGrpPage = 1 mavarGrpArrayPage(.Page) = mintGrpPage mavarGrpArrayPages(.Page) = mintGrpPage End If mvarGrpNamePrevious = mvarGrpNameCurrent End With
With GroupPages_FS .Page = 0 .Pages = 0 End With
End Function
|
|
レポートのイベントシーケンスをトレースするには: サンプルデータベースツール編で紹介する、レポートのイベントを表示するサンプルデータベース CH7-1.mdbを使用すると、レポートのイベントをトレースすることができます。 Accessを起動して、CH7-1.mdbを開くとスクリーンの右側にイベントログを表示するフォームが表示されます。フォームの下位に各種イベントを制御するチェックボックスがありますので、Page Header/Footerのみチェックしてその他のイベントは表示されないようにします。Clear èStartèOpenの順にコマンドボタンをクリックすると、レポートのイベントが発生順に表示されます。1回目のパスでは、合計ページ数が未定のためPagesプロパティに0が設定されています。2回目のパスでは、Pagesプロパティに4が設定されています。GroupPages_FS()関数は、Page/Pagesプロパティを参照してグループ別のカレントページと合計ページ数を計算しています。 |