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

アクセス2002を使っています。

フォームでコンボボックスを使用し一覧から選択できるようにしたのですが、一覧にない文字列を入力しようとすると「一覧から選択して下さい」とメッセージが出て入力できません。
一覧にない文字列も入力できるようにしたいのですが、どなたか教えていただけませんか?
フォームのプロパティで「リスト外入力」という項目がありますが、このプロシジャでマクロを設定すればできるのでしょうか?
よろしくお願い致します。

A 回答 (2件)

再びmaruru01です。



NotInListイベントに第2引数Responseに、処理状態の値をセットしなければいけません。
追加の値は、acDataErrAddedです。
したがって、

Set rst = New ADODB.Recordset

の前に、

Response = acDataErrAdded

を追加して下さい。
    • good
    • 0
この回答へのお礼

有難うございました。
うまく新規入力・登録が出来るようになりました。
今後もよろしくお願いします!

お礼日時:2002/09/20 08:08

こんにちは。

maruru01です。

コンボボックスの[入力チェック]プロパティが"はい"になっていませんか。
"はい"の場合は、リストにないデータを入力出来ませんので、"いいえ"にして下さい。
ただし、リストに新しいデータを追加する場合は、[入力チェック]を"はい"にして、[リスト外入力]イベントにそれを記述します。
NotInListイベントプロシージャのヘルプに、リストに追加する例が載っています。
ただし、これは、リスト項目を[値集合ソース]プロパティに直接、"赤;青;白"などと入れる場合です。
リストをどこかのテーブルから引っ張っている場合は、テーブルにその値を追加して、コンボボックスのRequeryメソッドで再クエリする必要があります。

この回答への補足

早速のアドバイス有難うございます。
質問を出した後によくよくQ&Aを読むと似たようなご質問が過去にありました。その回答によれば、「リスト外入力時イベント」に下記を記述すれば良いとのことでした。
早速やってみまたのですが、うまくいきません。
コンボボックスに入力した新しいデータは、リストの最後に新規登録はされるのですが、「リストにありません。リストから選択して...」というメッセージが出ます。
なぜでしょうか。

(記述は下記の通りです)

Private Sub 品名_NotInList(NewData As String, Response As Integer)

Dim rst As New ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "T仕入品名", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

rst.AddNew
rst! 仕入品名 = NewData
rst.Update

rst.Close
Set rst = Nothing

Me.品名 = ""
Me.品名.Requery
End Sub

お願いします。

補足日時:2002/09/19 16:45
    • good
    • 0

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

関連するカテゴリからQ&Aを探す