OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.211353
  • 閲覧数2025
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 83% (432/517)

ACCESSのフォームで、コンボボックスによる入力をするところがあるのですが、ここで、前回選択(または入力)した値を次に入力するときの既定値にすることは可能でしょうか。可能でしたら、その方法を教授ください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル12

ベストアンサー率 63% (325/508)

フォームを閉じても情報を残す必要がある場合は、そのフォーム以外にデータ(規定値)を記録しておくことが必要です。いろいろ考え方はあるかと思いますが、一般的な方法として、(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

お礼率 83% (432/517)

再度の回答ありがとうございます。
アドバイスを参考に頑張ってみます。m()m
投稿日時 - 2002-02-14 16:16:09
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル7

ベストアンサー率 28% (4/14)

コンボボックス.DefaultValue = コンボボックス って更新後処理ぐらいのイベントでしてみてはいかがでしょう? ...続きを読む
コンボボックス.DefaultValue = コンボボックス
って更新後処理ぐらいのイベントでしてみてはいかがでしょう?
補足コメント
hinebot

お礼率 83% (432/517)

回答ありがとうございます。
が、何分、ACCESSは初心者なもので、おっしゃっている意味がよく分からないのですが…。^^;
投稿日時 - 2002-02-04 13:49:10

  • 回答No.2
レベル12

ベストアンサー率 63% (325/508)

追加回答がないようですので、代わりに。 まず、HELPで DefaultValue プロパティと BeforeUpdate、AfterUpdate イベントについて調べてみてください。その上で、・・・ フォームをデザインビューで開いて、コンボボックスのイベントタブの更新後処理(更新前処理でもOKだと思います)からイベントプロシージャを開いて、以下のように記述してください。 (コンボ : コン ...続きを読む
追加回答がないようですので、代わりに。

まず、HELPで DefaultValue プロパティと BeforeUpdate、AfterUpdate イベントについて調べてみてください。その上で、・・・

フォームをデザインビューで開いて、コンボボックスのイベントタブの更新後処理(更新前処理でもOKだと思います)からイベントプロシージャを開いて、以下のように記述してください。
(コンボ : コンボボックスの名前、 入力するデータが文字列でなく数値なら、前後の "'" & と & "'" は不要)

Private Sub コンボ_AfterUpdate()
Me![コンボ].DefaultValue = "'" & Me![コンボ] & "'" ←この行を打ち込む
End Sub

以上で、コンボボックスの規定値は、最後に入力したコンボボックスの値と同じになります。

この方法では、フォームをを一旦閉じると、規定値もクリアされてしまいます。
再度フォームを開いた際にも規定値が残っていることが必要なら、多少工夫が必要ですので、補足要求をしてください。
補足コメント
hinebot

お礼率 83% (432/517)

ありがとうございます。
半ばあきらめかけていたので、嬉しいです。
>再度フォームを開いた際にも規定値が残っていることが必要
その通り、というかこれがしたいことなんです。よろしくお願いいたします。
HELP、見ておきます。
投稿日時 - 2002-02-13 18:08:55
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ