• ベストアンサー

コンボボックスのリスト外入力について(Access2002)

お世話になっております。 ひとつお聞きしたいのですが、Accessのコンボボックスプロパティの「リスト外入力」の設定のしかたが分かりません。 コンボボックスを非連結にして、コンボボックスより選択してフィルタをかける動作と、コンボボックスに値がなかったらコンボボックスに直接入力して新しい値を元に新規にレコードを追加すると言ったロジックを組み込みたいのですが可能でしょうか?よろしくお願いいたします。 まとめると、 (1)コンボボックスより値を選択して、フィルタをかける。 (2)コンボボックスに値が無かったら、コンボボックスに直接入力して新規レコードとして、レコードを追加する こう言った、流れでの作業です。

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

  • ベストアンサー
回答No.2

自分はAccess2000ですのでちょっと違うかも知れませんが・・・ まず、OnNotInList/リスト外入力時イベントは、、"LimitToList/入力チェック" プロパティに [Yes/はい] が設定されている場合のみ発生します。 そして、LimitToList/入力チェック" プロパティに [Yes/はい] が設定されている場合、一覧の選択項目にないテキストを入力することはできません。 これを考慮すると、次のようにすれば、リスト以外の項目が入ったときは、元のリストの一覧に追加できます。 (1)"LimitToList/入力チェック" プロパティに [Yes/はい] を設定 (2)OnNotInList/リスト外入力時イベントに次のような処理を行う。 Dim rst As New ADODB.Recordset Set rst = New ADODB.Recordset rst.Open "コンボボックスの元テーブル名", CurrentProject.Connection, adOpenKeyset, adLockOptimistic rst.AddNew rst![追加するフィールド名] = NewData rst.Update rst.Close Set rst = Nothing Me.コンボボックスのコントロール名 = "" Me.コンボボックスのコントロール名.Requery とすれば、コンボボックスの元リストに新しい項目を追加できます。 フィルタをかけたければ更新後イベントでフィルタの処理をいれればよいと思います。 とりあえずご参考まで。

その他の回答 (2)

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.3

》例えば、会員テーブルと言うのがあって、会員名をコンボボックスで選択して、無かったら、コンボボックスに入力して追加させるっていう時にはどの様にすればいいのでしょうか? 》  #2の方がコードを書いてしまっているので、会員名のみを登録する場合はあれで良いでしょう。良く理解してから使ってくださいね。  会員名のみではなく、その他の項目も登録したい場合は、現在のフォームをどのように作っているかで変わってきます。現在のフォームが何をしているかで変わってきます。会員情報入力・表示フォームなのか、会員名でフィルタをかけて、その他の情報(例えば購入履歴など)を表示しようとしているなど。  会員情報入力・表示フォームの場合は、情報を入力してもらって登録してもらうようなメッセージと処理を別途追加します。メッセージはNotInListイベントで、後はそのフォームの登録ボタンなどで。  その他の情報なら、会員情報を入力するフォームを開いてそのデータを登録する処理を追加する事になるでしょう。登録処理は、データ登録フォームでやり、それが終了したら、コンボボックスを Requeryすると。  これらの場合は、#2で書かれたリストに名前だけ登録するコードではなく、上記のような処理になります。

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.1

 コンボボックスの NotInListイベントで可能でしょう。

hunnbaruzo
質問者

補足

ありがとうございます。 私もあれから調べてみたのですが、NotInListを使えばと思ったのですが、使い方がよく分かりませんでした・・・ 例えば、会員テーブルと言うのがあって、会員名をコンボボックスで選択して、無かったら、コンボボックスに入力して追加させるっていう時にはどの様にすればいいのでしょうか?お手数ですがよろしくお願いいたします。

関連するQ&A