プロが教えるわが家の防犯対策術!

最近アクセスを始めましたが、わからないことが多くて皆様のお知恵よろしくお願いします。

現在、フォームにデータ入力やレポート用のクエリ抽出要件用とレポート表示用として、非連結のテキストボックスを多数設置して利用していますが、一度入力した要件は、しばらくは同じ値で作業します。

よって、入力した要件データが次回もそのまま表示されるようにしたいのですが、たとえば日付入力テキストで、VBAのafterupdate で以下の設定をすると、一旦はデザインビューのプロパティの既定値が更新内容に変わっているのですが、終了・再立ち上げを行うと元の既定値に戻ってしまいます。

Private Sub 日付_AfterUpdate()
Me!日付.DefaultValue = "#" & Me!日付 & "#"
End Sub

なお、入力後にフォームのデザイン等を一部変更・または直接プロパティで既定値変更した場合は、「フォームの変更を保存しますか?」の表示がでて、「はい」クリックするとフォームデザインとともに上記更新日付等も既定値が更新され、再立ち上げ時にも更新値が表示されます。

よって、フォームビューからの入力テキストの更新だけでは、見た目こそプロパティの既定値が更新されていますが、実際にはフォームの更新と認識されず、保存動作が行われていないようです。
更新ボタンをクリックしてからの終了や、close acSaveYes 等の設定してみても効果はないです。


フォームビューからの入力だけで、既定値更新の内容が保存できる方法があれば、よろしくお願いします。

A 回答 (1件)

その都度デザインビューに切り替えて、規定値を変更し保存、フォームビューに切り替え・・と


行えば出来るかと思いますが、ちょこまかと変更していると
ファイルの肥大化・破損が心配になってきます。
なので
規定値用のテーブルを作成し
FrmName|FldName|DefValue(文字型にしときます)
フォーム1|Txt1|ABC
フォーム1|Txt2|2014/1/1
フォーム2|Txt1|xyz
(対象となるフォームが一個だけならFrmNameフィールドは不要)
で、
適当なタイミング
テキストボックスの変更時
コマンドボタンを押したとき
フォームを閉じるとき
などに上記テーブルも更新するようにします。

フォームを開くときに
レコードセットを取得するかDlookup関数で
Me!Txt1.DefaultValue = Dlookup("defvalue","規定値テーブル","FrmName=" & me.name & " and fldname='txt1'")
などとセットして行けば目的は達せられると思います。
※質問文中のdefaultValueのセットと併用する形です。
ご参考まで。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やはりフォームビューからの既定値変更は認識できないということですね。
ご提示いただいた別テーブルの利用方法についてさっそく試してみたいと思います。
また何かありましたら、よろしくお願いします。

お礼日時:2014/11/13 12:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!