2015-10-10 183 views
8

フォームにコンボボックスがあり、アクセスデータベースでSQLクエリを実行した後、コンボボックス内の項目の1つをプログラムで選択しようとしています。 私はアイテムを反復処理し、選択された項目を設定するために、次のコードを使用します示されているようにコンボボックス選択時のエラー2115

'Make the appropriate location appear in the combobox 
For i = 0 To cboLocations.ListCount - 1 
    If Me.cboLocations.Column(0, i) = locindex Then 
    Debug.Print "locindex: " & locindex & vbCrLf & " Me.cboLocations.Column(0, i):" & Me.cboLocations.Column(0, i) 
    Me.cboLocations.SetFocus 
    Me.cboLocations.ListIndex = i '<<< error 2115 
    Exit For 
    End If 
Next i 

を、私はエラー2115を取得し続ける:このフィールドのBeforeUpdateまたはのValidationRuleプロパティに設定マクロまたは関数がアクセスを妨げていますフィールドにデータを保存することはできません。

エラーメッセージに示されたこのコンボボックスのいずれのプロパティも何も設定されていません。だから私は立ち往生している。お知らせ下さい。

+0

解決されましたか、実際の説明が必要ですか? –

答えて

2

プログラムで

Me.MyCombo.Value = "target text" 
...私はいつもそれをやった方法は、コンボのValue次のように何かを割り当てることです

コンボボックス内の項目のいずれかを選択

Valueは、から得られます。バインドされた列のc omboの選択行。 (あなたはコンボのプロパティシートのデータタブに連結列を見つけることができます。)逆に、割り当て「対象のテキストは」Valueは、一致する行を選択します。

あなたの状況では、locindex変数と同じテキストを含むコンボ行を選択しようとしていると思います。そして

Me.cboLocations.Value = locindex 
...それが本当である、そして私はあなたが必要とするすべてはこのだと思う場合は限り、あなたはそれを行うときのように、更新前 どちらも入力規則は、私には正しい選択のように思えます。私は、クエリの直後に "データベース上のSQLクエリ"を実行するために使用しているコードから実行することをお勧めします。

+0

ありがとうございます。これは実際に私が仕事をすることができ、有用だったものです。私は、Me.cboLocations.ListIndex = iをMe.cboLocations.Value = Me.cboLocations.Column(1、i)に置き換えると、コンボボックスに2つの列があり、Me.cboLocations.Selected(i)= Trueになります。特定の項目がリストで選択されていることを確認してください。 – Alan

1

おそらく、BeforeUpdateイベントと衝突している可能性があります。

AfterUpdateをお試しください。

+0

コンボボックスのBeforeUpdateイベントには何も書かれていません。私はここから何をすべきか分からない。 – Alan

+0

エラーメッセージはクリアされていますので、無効にするコードは他の場所を参照してください。 – Gustav

+0

役に立たなかった他に誰かが提案している? – Alan

関連する問題