• ベストアンサー

ACCESS コンボボックスについて

ACCESSのフォームで、コンボボックスによる入力をするところがあるのですが、ここで、前回選択(または入力)した値を次に入力するときの既定値にすることは可能でしょうか。可能でしたら、その方法を教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.3

フォームを閉じても情報を残す必要がある場合は、そのフォーム以外にデータ(規定値)を記録しておくことが必要です。いろいろ考え方はあるかと思いますが、一般的な方法として、(1)Public変数に代入する。(2)テーブルにデータとして保存する。 の二通りが考えられます。 (1)の方法は、レスポンスが速く、構文も比較的容易にできますが、データベースを閉じてしまうと規定値もクリアされてしまいます。 (2)の方法は、多少処理が煩雑で、応答も(1)に比べると劣りますが、Accessを一旦閉じても規定値は保存されています。 と言うことで少々複雑になりますが、ここでは (2) の方法を提案させていただきます。 まず、規定値情報を保存するためのテーブル(名前を「TextParameter」:文字列情報のパラメーター全般を保存するテーブル)を作ります。 これに [pName] と [pValue] の二つのテキスト型フィールド(名前はこれにこだわらなくても好みでいいです。)をつくって、最初のレコードの[pName]に、「コンボ規定値」と入れてください。([pValue]は空欄でけっこうです。) 前回お示した、プロシージャの Me![コンボ].DefaultValue ~ の次の行に、以下を挿入してください。 DoCmd.RunSQL "UPDATE TextParameter SET pValue = '" & Me![コンボ] & "' WHERE [pName]='コンボ規定値';" (更新クエリーで、TextParameterテーブルの pValueフィールドに、規定値を書き込む操作です。) フォームの Open(開く時)イベントに、以下を記述してください。 Me![コンボ].DefaultValue = "'" & DLookup("pValue", "TextParameter", "pName='コンボ規定値'") & "'" (コンボボックスの規定値に、テーブルに保存してある値をセットする操作です。) 多少複雑になってしまいましたが、たぶん、以上でご希望のことが可能かと思います。 DoCmd オブジェクト、RunSQL メソッド、アクション(更新)クエリー、DLookup 関数、のあたりを、HELP で確認してみてください。

hinebot
質問者

お礼

再度の回答ありがとうございます。 アドバイスを参考に頑張ってみます。m()m

その他の回答 (2)

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.2

追加回答がないようですので、代わりに。 まず、HELPで DefaultValue プロパティと BeforeUpdate、AfterUpdate イベントについて調べてみてください。その上で、・・・ フォームをデザインビューで開いて、コンボボックスのイベントタブの更新後処理(更新前処理でもOKだと思います)からイベントプロシージャを開いて、以下のように記述してください。 (コンボ : コンボボックスの名前、 入力するデータが文字列でなく数値なら、前後の "'" & と & "'" は不要) Private Sub コンボ_AfterUpdate() Me![コンボ].DefaultValue = "'" & Me![コンボ] & "'" ←この行を打ち込む End Sub 以上で、コンボボックスの規定値は、最後に入力したコンボボックスの値と同じになります。 この方法では、フォームをを一旦閉じると、規定値もクリアされてしまいます。 再度フォームを開いた際にも規定値が残っていることが必要なら、多少工夫が必要ですので、補足要求をしてください。

hinebot
質問者

補足

ありがとうございます。 半ばあきらめかけていたので、嬉しいです。 >再度フォームを開いた際にも規定値が残っていることが必要 その通り、というかこれがしたいことなんです。よろしくお願いいたします。 HELP、見ておきます。

  • hysteric5
  • ベストアンサー率28% (4/14)
回答No.1

コンボボックス.DefaultValue = コンボボックス って更新後処理ぐらいのイベントでしてみてはいかがでしょう?

hinebot
質問者

補足

回答ありがとうございます。 が、何分、ACCESSは初心者なもので、おっしゃっている意味がよく分からないのですが…。^^;