SSブログ

アクセス小僧:前回値を既定値にする [コンピューター]

前回入力したレコードの値をフォームの既定値になるようにしてみました。

access_form01.jpg

これは、エクセルから移植中の、医療費控除の医療費集計用のデータベースの、医療費入力フォームのデザインビューです。

ここで、各テキストボックス、コンボボックスの既定値は、次の様にしました。(プロパティ⇒データ⇒既定値)

ボックス名 既定値 説明
日付 =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番目のレコードにスクロールしてしまうため、ブックマークを使って、元の位置にスクロールし直しています。

かしこ[猫]
ヤバイぜ!(8)  コメント(3)  トラックバック(0) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 8

コメント 3

cheese999

ヤバイぜ! ありがとうございます(^_0)ノ
by cheese999 (2016-10-31 21:14) 

ソニックマイヅル

すごいプログラミングですね。^^;
by ソニックマイヅル (2016-11-01 17:46) 

cheese999

ソニックマイヅルさん、
今まで、アクセスは使ったことが無かったのですが、職場で『アクセス使える?』と聞かれたので、データベースの勉強がてら、アクセスの勉強しています。今回のネタはネット上に落ちているコードを拾っては試し、の繰り返しでやっと実現できました。

defaultに相当する日本語は。。
既定値⇒○
規定値⇒×
でしょうか?
by cheese999 (2016-11-02 00:43) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。