Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項 サイト内検索


売上げリストのページ別集計値をまとめて印字する : Access裏技Tips



売上げリストを印刷すると、ページごとの小計をまとめて印刷する必要に迫られることもあるでしょう。 ここでは、ページ別小計をそのページに印字するだけでなく、別ページにまとめて印刷する技を紹介します。

ページ別集計値をまとめて表紙に印字する

  1. サンプルテーブル(tbl_sample)をもとにして、「請求別及び取り引き先別の売上リスト」のレポート(rpt_sample)を作成します。
  2. このレポートには、レポート/ページそれぞれのヘッダー、フッターを作成します。あわせて、請求月フィールド、取引先名フィールドのヘッダー、フッターも作成します。
  3. 各ページの小計を求め、その値をプロシージャ内で保持し、レポートフッターの所定の場所に印字します。(表示はレポートフッターに作成します)

「請求別及び取り引き先別の売上リスト」のレポート作成

「請求別及び取り引き先別の売上リスト」のレポートを作成します。

  1. サンプルデータを元に、請求別及び取り引き先別の売上リストを作成します。
  2. レポート及びページの各ヘッダー、フッターを作成します。
  3. 請求月、取引先名フィールドのヘッダー、フッターを作成します。

  1. レポートフッターを表紙に見立てて、タイトル名と小計や総額、消費税額を表示させるテキストボックスを5個作成します。

宣言セクションに変数を宣言

宣言セクションに変数を宣言します。

Dim varPageValue As Variant ' --- A
Dim varPageCount As Variant
解説
  1. ページごとの小計値を格納していきます。値保持のため宣言セクションに定義します。

宣言セクションに変数を宣言

宣言セクションに変数を宣言します。

Private Sub ページヘッダーセクション_Format(Cancel As Integer, _
						FormatCount As Integer)

    Me.txtPageCount = 0 ' --- A
    
    If Me.Page = Me.Pages Then ' --- B
        Me.ページヘッダーセクション.Visible = False
    Else
        Me.ページヘッダーセクション.Visible = True
    End If
    
End Sub
解説
  1. txtPageCount(ページフッターの小計)テキストボックスの値を0に初期化します。
  2. 最後のページでは、ページヘッダーセクションを非表示にします。
    各ページのページ数(Me.Page)と総ページ数(Me.Pages)が同じであれば、最後のページです。
今回のおすすめポイント

Me.Page = Me.Pages

各ページのページ数(Me.Page)と総ページ数(Me.Pages)が同じであれば、最後のページと考えます。

詳細セクション印刷時イベントプロシージャの作成

詳細セクション印刷時イベントプロシージャを作成します。

Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)

    Me.txtPageCount = Me.txtPageCount + Me.txtCount ' --- A
    
End Sub
解説
  1. txtPageCountに次々と請求額を加算していきます。
    Me.txtCountは請求額を表示するテキストボックスです。左辺に右辺を代入します。

ページフッターセクションフォーマットイベントプロシージャの作成

ページフッターセクションフォーマットイベントプロシージャを作成します。

Private Sub ページフッターセクション_Format(Cancel As Integer, _
						FormatCount As Integer)

    If Me.Pages <> 0 Then '--- A
        varPageValue = varPageValue & Chr(13) & Chr(10) & _
				Format(Me.txtPageCount, "0,###円") '--- B
        Me.txtprint小計 = varPageValue '--- C
    End If
        
    If Me.Pages <> 0 Then
        varPageCount = varPageCount & Chr(13) & Chr(10) & _
			Me.Page & " / " & (Me.Pages - 1) & "小計 : " '--- D
        Me.txtprintCount = varPageCount '--- E
    End If
    
    If Me.Page = Me.Pages Then '--- F
        Me.ページフッターセクション.Visible = False
    Else
        Me.ページフッターセクション.Visible = True
    End If
    
End Sub
解説
  1. Pagesプロパティをページフッタに配置した場合、レポートが開かれると、全てのページヘッダー、フツターのFormatイベントが実行されてしまいます。
    If Me.Pages <> 0 Then と記述しているのは、この時に影響を受けないためです。
  2. テキストボックス内で改行を行うためには、Chr(13) & Chr(10) を記述する必要があります。
  3. txtprint小計はフォームフッターに作成した、ページ別の小計を表示するテキストボックスです。
  4. ページ小計の見出しを作成します。
  5. Me.txtprintCountはフォームフッターに作成した、ページ小計の見出しを表示するテキストボックスです。
  6. 最後のページでは、ページフッターセクションを非表示にします。

レポートヘッダーセクション印刷時イベントプロシージャ

レポートヘッダーセクション印刷時イベントプロシージャを作成します。

Private Sub レポートヘッダー_Print(Cancel As Integer, PrintCount As Integer)

    Dim A As Currency
    Dim B As Currency
    Dim strValue As String
    
    Const Zei = 0.05 '--- A
    
    A = Me.txtReportCount
    B = Me.txtReportCount * Zei
    
    strValue = Format(A, "0,###円") & Chr(13) & Chr(10) '--- B
    strValue = strValue & Format(B, "0,###円") & Chr(13) & Chr(10) '--- C
    strValue = strValue & Format((A + B), "0,###円") '--- D
    
    Me.txtprint計 = strValue

End Sub
解説
  1. 消費税率(現行5%)を定数で宣言します。
  2. 変数strValueに、変数A(Format関数でカンマ切と円を付加)を代入します。Aは総合計(txtReportCount)をあらわす変数です。
  3. 変数strValueに、前行のstrValueと変数B(Format関数でカンマ切と円を付加)を代入します。Bは税額(Me.txtReportCount * Zei)をあらわす変数です。
  4. 変数strValueに、前行のstrValueと変数A+B(Format関数でカンマ切と円を付加)を代入します。A+Bは、総合計+税額をあらわします。

動作確認

レポートを印刷プレビューで開きます。

1ページ

最終ページ

関連ページ

ページの先頭へ 前ページへ戻る

 


売上げリストのページ別集計値をまとめて印字する : Access裏技Tips


 

-Microsoft Access Club-

アメリカ合衆国の大手データセンターのアダルト対応可能なリーズナブル価格設定の専用・共有レンタルサーバーをご提供しています。
アメリカ合衆国の大手データセンターにサーバー機器を設置。
アダルト対応可能な専用・共有レンタルサーバーを提供。