MS Access Tips/Sample and VBA and Blog customize etc...

帳票サブフォームで行番号フィールドの連番を維持する

一対多の関係のデータをメイン/サブフォーム形式で入力する場合、サブフォームのデータに連番(行番号)を振りたい。途中のレコードを削除しても欠番がでることなく連番を維持したい。また、任意に並び替えをしたい。

上記のような仕様を実現する方法を紹介します。

 連番(行番号)に関しては、テーブルに持たせなくても、計算やVBAで表示させる手段がありますが、連番のフィールドがあるとクロス集計するときとか、固定行数で改ページするなどの時に便利な場合も多々あります。

 また、たとえば見積書で、明細部分の項目で、中心となる商品、重要度の高い商品を上位に持って行きたい、ただし場合によって固定ではないので、任意に順番を入れ替えたい、というような希望がでることもあると思います。

帳票サブフォームで行番号フィールドの連番を維持する

新規追加および行を上へ移動する

難易度:

下記のサンプルをもとに説明します。

メインテーブル 受注伝票(受注ID, 顧客ID, 受注日・・・)
サブテーブル  受注明細(ID, 受注ID, 行番号, 商品ID, 単価, 数)
行番号 の昇順に並び替えを設定


メインフォーム F_受注伝票
サブフォームコントロール 受注明細

リンク親/子フィールド 受注ID

サブフォームのフォームフッターにコマンドボタンを3つ配置
cmd上へ  カレントレコードを上の行へ移動
cmd下へ  カレントレコードを下の行へ移動
cmd削除  カレントレコードまたは選択したレコードを削除


サブフォームのモジュール


 

考え方

新規追加時
更新前処理イベントで、新規レコードの時、[行番号]に CurrentRecord を代入

レコード削除時
削除後確認イベントで、RecordsetClone を利用してカレントレコードから最終レコードまで移動して行番号を連番に更新

「上へ」ボタンクリック時
カレントレコードの行番号を -1 して、前レコードの行番号を +1 して、サブフォームコントロールを再クエリ。

「下へ」ボタンクリック時
カレントレコードの行番号を +1 して、次レコードの行番号を -1 して、サブフォームコントロールを再クエリ。

下記リンクからサンプル MDB をダウンロードできます。

サンプルファイルが下記からダウンロードできます。
FrmKeepSequenceNumber_07.zip (Access 2007-2010 形式 - 35kb)
FrmKeepSequenceNumber.zip (Access 2002-2003 形式 - 30kb)
FrmKeepSequenceNumber_2k.zip (Access 2000 形式 - 27kb)

追加情報があります。
帳票サブフォームで行番号フィールドの連番を維持する その2
帳票サブフォームで行番号フィールドの連番を維持する その3

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/58-fc5f9a66
該当の記事は見つかりませんでした。