| Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項 | |
|
考え方最後まで罫線を引くために印刷専用テーブルをテーブル作成クエリを用いて作成します。考え方は以下のとおりです。
必要とするテーブルは、以下のとおりです。
フォームの作成フォーム上のコマンドボタンからレポート印刷を行います。そのため、以下のようなフォームを作成します。隠しテキストボックスを新規作成し、このテキストボックスの値を元にレポート印刷用のテーブルを作成します。
コマンドボタンクリック時イベントプロシージャコマンドボタンのクリック時イベントに下記プロシージャを記述します。 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
解説
レポートの作成レポートを以下のように作成します。レポート自体に特殊な設定は行っていません。
留意点
実行結果レポートは動作するPCによって設定が異なります。このサンプルでは、B5版の横の設定になっています。また、元テーブルのレコード数は51です。 最初のページ
2ページ
最後のページ
まとめこのプロシージャで注意すべき事は、Constステートメントです。これは、定数を宣言しています。IF構文以下の条件節の中では同じ定数が複数回記述する ことがあります。 このような場合は、プロシージャの初期の段階で、定数(数値)を定義しておけば、将来変更等があった場合でも、条件節をいじらずにConstステートメントの数字を変更するだけで事足ります。 関連ページ
|