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


最終ページの最後まできっちりと罫線を引く : Access裏技Tips



帳票レポートの最終ページを見ると、データがない場合は最後まで罫線が引かれません。 ここでは、最終ページの最後までしっかりと罫線を引く技を紹介します。

最後まで罫線を引く

  1. サンプルテーブル(tbl_sample)をもとにして、「物品購入一覧リスト」の 帳票レポート(rpt_sample)を作成します。
  2. テーブルフィールドと連結したテキストボックスの境界線スタイルを実線にします。
  3. tbl_sampleテーブルと同じ構造を持つテーブル(tbl_blank)を作成します。
  4. ここには、空白データで20行ぐらいのレコードを予め作成しておきます。
  5. 次に、フォームを作成し、印刷を実行するコマンドボタン(Cmdコマンド)を配置します。
  6. 最後まで罫線を引くということは、言い換えれば最後までデータが存在することに他ならないので、 空白行のデータを追加クエリーでテーブルに追加します。
  7. なお、このTipsが正しく動作するのは、レポートヘッダー、フッターを持たない帳票レポートのみです。

「物品購入一覧リスト」の レポートを作成

  1. 「物品購入一覧リスト」の レポートを作成します。
  2. サンプルデータを元に、物品購入一覧リストを作成します。

tbl_blankテーブルの作成

  1. tbl_blankテーブルを作成します。tbl_sampleテーブルと同じフィールド構成のテーブルを作成します。
  2. レコード数は20件ほどでフィールドデータは空白にしておきます。

「印刷実行」の フォームを作成

  1. 「印刷実行」の フォームを作成します。
  2. 非連結フォームを作成します。
  3. 印刷を実行するコマンドボタンを作成します。

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

コマンドボタンクリック時イベントプロシージャを作成します。

Private Sub Cmdコマンド_Click()

    Dim intCount As Integer
    Dim intMod As Integer
    Dim intShort As Integer
    Dim SQL As String ' --- A

    Const intPage = 19 ' --- B

    DoCmd.SetWarnings False ' --- C
    
    SQL = "SELECT ID, 商品, 販売店 " ' --- D
    SQL = SQL & "INTO tbl_印刷対象 FROM tbl_sample;"
    
    DoCmd.RunSQL SQL ' --- E
        
    intCount = DCount("ID", "tbl_印刷対象")  ' --- F
    intMod = intCount Mod intPage ' --- G
    intShort = intPage - intMod ' --- H
    
    SQL = "INSERT INTO tbl_印刷対象 ( 商品, 販売店 ) " ' --- I
    SQL = SQL & "SELECT tbl_blank.商品, tbl_blank.販売店 "
    SQL = SQL & "FROM tbl_blank "
    SQL = SQL & "WHERE tbl_blank.ID Between 1 And " & intShort & ";"
    
    DoCmd.RunSQL SQL
    DoCmd.SetWarnings True ' --- J
    DoCmd.OpenReport "rpt_sample", acViewPreview
        
End Sub
解説
  1. プロシージャ内でSQLを実行しますので、SQL構文を記述する変数を定義します。
  2. サンプルでは、レポートの1ページに必ず19行のデータが印字されるものとします。
  3. システムメッセージをオフにします。
  4. テーブル作成クエリーのSQLを記述します。
    このSQLでtbl_sampleと同じ構造/データの新規テーブル(tbl_印刷対象)を作成します。印刷のレコードソースになるテーブルです。
  5. RunSQLメソッドでSQLを実行します。
  6. DCount関数でtbl_印刷対象のレコード件数を求めます。
  7. Mod関数でtbl_印刷対象のレコード件数をintPageで除した剰余を求めます。
  8. 最後のページで不足分する行を求めます。
    これが最後まで罫線を引くために不足しているデータ件数です。
  9. intShort件分の空白データを追加するSQLを記述します。
    元になるテーブルは、tbl_blankです。 WHERE条件節に、例えば、Between 1 And 10 と記述するとデータを10件追加します。
  10. システムメッセージをオンにします。
今回のおすすめポイント

空白データのレコード

テーブルデータに空白レコードを追加/挿入するのは、DAOのRecordSetを用いるのが一般的です。 しかし、今回のようにtbl_blankテーブルを予め作成しておくことで、馴染みの深い追加クエリーで対処できます。

動作確認

  1. フォームをビューモードで開きます。
  2. [印刷実行]のコマンドボタンをクリックします。

左側最初のページ

右側最後のページ

今回のおすすめポイント

簡単なSQLの記述方法

SQLを記述するのは難しいものですが、SQLをコピーし複写することなら簡単にできます。

  1. まず、クエリーを作成します。
  2. デザインビューで開きます。
  3. メニューバーのクエリからSQL、パススルーと進みます。
  4. パススルークエリが開きますから、コピーします。
  5. プロシージャに戻って複写します。

SQLの最初と最後は、ダブルクオテーション(")で囲む必要があります。
複数の行に分割する場合は、各行の最後の文字とダブルクオテーションとの間に半角のスペースを入れます。

関連ページ

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

 


最終ページの最後まできっちりと罫線を引く : Access裏技Tips


 

-Microsoft Access Club-

cPanel あるいは PLESKコントロールパネルをインストールした専用レンタルサーバのディスカウントプランを期間限定で公開しています。
cPanel・PLESKコントロールパネルを備えた専用レンタルサーバ....。