アクセス小僧:前回値を既定値にする [コンピューター]
前回入力したレコードの値をフォームの既定値になるようにしてみました。
これは、エクセルから移植中の、医療費控除の医療費集計用のデータベースの、医療費入力フォームのデザインビューです。
ここで、各テキストボックス、コンボボックスの既定値は、次の様にしました。(プロパティ⇒データ⇒既定値)
交通費、補てんは無い場合がほとんどなので、前回値とせず、無しの選択肢を既定値としました。
領収書番号は連番なので、前回値+1を既定値としています。
と、これでよし、と思い、入力してみたところ、新規レコード入力中に、次の新規レコードの欄が表れ、2個前の値を元にして既定値ができてしまうため、領収書番号を確定したら、入力したデータを医療費テーブルに反映するようにイベントプロシージャを設定しました。
設定したのは、領収書番号テキストボックスのフォーカス喪失後のイベントプロシージャです。
(プロパティ⇒イベント⇒フォーカス喪失後⇒コードビルダー)
Private Sub 領収書番号_LostFocus()
'【変数】
Dim varBookmark As Variant ' ブックマーク
' 現在のレコードをブックマーク
varBookmark = Me.Bookmark
' フォーカス喪失後、更新
Me.Requery
' 更新前のレコードへ
Me.Bookmark = varBookmark
End Sub
VBEが開いたら、上記のコードを書き込みます。更新を実行すると、画面が1番目のレコードにスクロールしてしまうため、ブックマークを使って、元の位置にスクロールし直しています。
かしこ
これは、エクセルから移植中の、医療費控除の医療費集計用のデータベースの、医療費入力フォームのデザインビューです。
ここで、各テキストボックス、コンボボックスの既定値は、次の様にしました。(プロパティ⇒データ⇒既定値)
ボックス名 | 既定値 | 説明 |
日付 | =DLast("日付","T_医療費") | 医療費テーブルの日付の前回値 |
氏名ID | =DLast("氏名ID","T_医療費") | 医療費テーブルの氏名IDの前回値 |
交通費ID | =[交通費ID].[itemdata](0) | 交通費IDコンボボックスの1番目の選択肢(交通費なし) |
補てんID | =[補てんID].[itemdata](0) | 補てんIDコンボボックスの1番目の選択肢(補てんなし) |
領収書番号 | =DLast("領収書番号","T_医療費")+1 | 医療費テーブルの領収書番号の前回値+1 |
交通費、補てんは無い場合がほとんどなので、前回値とせず、無しの選択肢を既定値としました。
領収書番号は連番なので、前回値+1を既定値としています。
と、これでよし、と思い、入力してみたところ、新規レコード入力中に、次の新規レコードの欄が表れ、2個前の値を元にして既定値ができてしまうため、領収書番号を確定したら、入力したデータを医療費テーブルに反映するようにイベントプロシージャを設定しました。
設定したのは、領収書番号テキストボックスのフォーカス喪失後のイベントプロシージャです。
(プロパティ⇒イベント⇒フォーカス喪失後⇒コードビルダー)
Private Sub 領収書番号_LostFocus()
'【変数】
Dim varBookmark As Variant ' ブックマーク
' 現在のレコードをブックマーク
varBookmark = Me.Bookmark
' フォーカス喪失後、更新
Me.Requery
' 更新前のレコードへ
Me.Bookmark = varBookmark
End Sub
VBEが開いたら、上記のコードを書き込みます。更新を実行すると、画面が1番目のレコードにスクロールしてしまうため、ブックマークを使って、元の位置にスクロールし直しています。
かしこ
ヤバイぜ! ありがとうございます(^_0)ノ
by cheese999 (2016-10-31 21:14)
すごいプログラミングですね。^^;
by ソニックマイヅル (2016-11-01 17:46)
ソニックマイヅルさん、
今まで、アクセスは使ったことが無かったのですが、職場で『アクセス使える?』と聞かれたので、データベースの勉強がてら、アクセスの勉強しています。今回のネタはネット上に落ちているコードを拾っては試し、の繰り返しでやっと実現できました。
defaultに相当する日本語は。。
既定値⇒○
規定値⇒×
でしょうか?
by cheese999 (2016-11-02 00:43)