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

帳票フォームで新規行を一番上に表示する

帳票フォームで、新規レコードを入力する行(新規行)は通常は一番最後の行に表示されますが、これを一番上に表示したいのですが、何か設定がありますか。

定期的に掲示板で見かける質問ですね。Accessにはそのようなプロパティ設定はないので、別の代案を考えることになります。

要はフォームの一番上で新規データを入力したいということなので、フォームヘッダーに非連結で入力用のコントロールを配置してVBAで追加するようにすれば希望に近いものになります。

FrmHederNewRecord.png

難易度:

まず普通に帳票フォームを作成します。ウィザードを使ってもいいでしょう。フォームの「追加の許可」プロパティは「いいえ」にしておきます。

詳細セクションのコントロールをすべて選択して、フォームヘッダーに貼り付けます。名前をコントロールソースのフィールド名の前にnを付けたものにします。例えばフィールド名が「商品番号」なら「n商品番号」という名前にします。コントロールソースは削除して非連結にします。

フォームヘッダーの右端にコマンドボタンを配置して標題を「追加」、名前を cmdAddNew とします。

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

下記の参照設定が必要。 Access2007以前の場合 Microsoft DAO *.* Object Library Access2007以降の場合 Microsoft Office *.* Access database engine Object Library

フォームのレコードの並び順は主キーの降順にするとより自然なUIになるかも知れません。必要に応じて設定してください。

以上です。これで、ヘッダーのコントロールでデータを入力して追加ボタンをクリックすると追加されます。非連結での入力になりますので、入力チェック等は自前で実装する必要がありますが、その辺は必要に応じて追加してください。例えば数値型のフィールドに数値型以外のデータが入力してあると .Update でエラーが発生しますので、事前にチェックしておいて再入力を要求する処理を追加する必要があります。

サンプルMDB が下記からダウンロードできます。
FrmHeaderNewRecord_07.zip (Access 2007 形式 - 47kb)
FrmHeaderNewRecord.zip (Access 2002-2003 形式 - 44kb)
FrmHeaderNewRecord_2k.zip (Access 2000 形式 - 43kb)


拍手する

Leave a reply






Trackbacks

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