Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索


続_レポートで最後まで罫線を引く簡易な方法:SampleFile139



No.137で「最後まで罫線が引かれている帳票」の作成方法をご紹介しました。しかし、ご紹介した方法では、ページヘッダーとページフッダーを備えたレポートにおいては、効力がないものでしたね。 今回はNo137のサンプルを改良して、このページヘッダーとページフッダーを備えたレポートでも作動するプロシージャをご紹介します。この頁に進まれる前に、必ずNo137をご理解の 程お願いします。

考え方

最後まで罫線を引くために印刷専用テーブルをテーブル作成クエリを用いて作成します。考え方は以下のとおりです。

  1. 元データから印刷専用テーブルを新規作成します。
  2. 元データのレコード数を求めます。
  3. プロシージャで必要となる空白行数を求めます。
  4. 追加クエリを用いて空白行を印刷専用テーブルに追加します。

必要とするテーブルは、以下のとおりです。

  1. 空白行だけのテーブル(tbl_blank) → 事前に作成する必要があります。
  2. 元テーブル(tbl_sample)→ 事前に作成する必要があります。
  3. 印刷用テーブル(tbl_印刷用テーブル)→ テーブル作成クエリを用いて作成します。

フォームの作成

フォーム上のコマンドボタンからレポート印刷を行います。そのため、以下のようなフォームを作成します。隠しテキストボックスを新規作成し、このテキストボックスの値を元にレポート印刷用のテーブルを作成します。

コマンドボタンクリック時イベントプロシージャ

コマンドボタンのクリック時イベントに下記プロシージャを記述します。

Private Sub cmd_コマンド_Click()

    Dim intcount As Integer
    Const Confirst = 19 '第1ページの行数。
    Const Conbetween = 22 '第2ページ以降の行数。
    Const Conlast = 20 '最後のページの行数。

    DoCmd.SetWarnings False '警告メッセージをオフにします。

    'レポートを作成するテーブルを元に、新規テーブルを作成します。
    DoCmd.OpenQuery "qry_table作成"
    
    'レコード件数を求めます。
    intcount = DCount("ID", "tbl_印刷対象テーブル")
    
    'レコード件数が1ページで収まる場合。例、intcount=1 - 19。
    If intcount <= Confirst Then
        Me.txt_抽出条件 = Confirst - intcount
    
    'レコード件数が2ページで収まる場合。例、intcount=20 - 40。
    ElseIf intcount > Confirst And intcount <= (Confirst + Conlast) Then
        Me.txt_抽出条件 = (Confirst + Conlast) - intcount
    
    'レコード件数が3ページ以降に続く場合。例、intcount=41 - ∞
    ElseIf intcount > (Confirst + Conlast) Then
        Me.txt_抽出条件 = Conlast - ((intcount - Confirst) Mod Conbetween)
    End If
         
    DoCmd.OpenQuery "qry_blank" '空白レコードを追加する。
    DoCmd.SetWarnings True '警告メッセージをオンに戻します。
    DoCmd.OpenReport "rpt_sample", acViewPreview
        
End Sub
解説
  1. 最初のページ、最後のページにはヘッダー、フッタが挿入されるので行数が異なります。よって、定数としてプロシージャ内で行数を指定します。
  2. このプロシージャで注意すべき事は、Constステートメントです。これは、定数を宣言しています。IF構文以下の条件節の中では同じ定数が複数回記述する ことがあります。このような場合は、プロシージャの初期の段階で、定数(数値)を定義しておけば、将来変更等があった場合でも、条件節をいじらずにConstステートメントの数字を変更するだけで事足ります。

レポートの作成

レポートを以下のように作成します。レポート自体に特殊な設定は行っていません。

留意点
  1. レポートをビューモードで開き、レポートサイズを決めてから、最初のページの行数、2ページ目以降の行数、最後のページの行数を事前に求めておく必要があります。

実行結果

レポートは動作するPCによって設定が異なります。このサンプルでは、B5版の横の設定になっています。また、元テーブルのレコード数は51です。

最初のページ

2ページ

最後のページ

まとめ

このプロシージャで注意すべき事は、Constステートメントです。これは、定数を宣言しています。IF構文以下の条件節の中では同じ定数が複数回記述する ことがあります。

このような場合は、プロシージャの初期の段階で、定数(数値)を定義しておけば、将来変更等があった場合でも、条件節をいじらずにConstステートメントの数字を変更するだけで事足ります。

関連ページ

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

 


続_レポートで最後まで罫線を引く簡易な方法:SampleFile139


 

-Microsoft Access Club-