2013-11-20 3 views
5

У меня есть форма Access 2010, в которой есть ComboBox cmbSubTopic, в котором перечислены два столбца (SubTopicID и SubTopic). Поле со списком привязано к полю, содержащему SubTopicID. Столбец SubTopicID скрыт, он показывает только SubTopic. Когда пользователь выбирает SubTopic из выпадающего списка, соответствующий SubTopicID хранится в таблице. Я написал некоторый код VBA для события on load формы для поиска SubTopicID в таблице, и в ComboBox выбран соответствующий SubTopic. Мой текущий код-то вроде этого:VBA: Как выбрать элемент из ComboBox

Set rsST = dbs.OpenRecordset(strSqlst) 
For i = 0 To Me.cmbSubTopic.ListCount - 1 
    If Me.cmbSubTopic.Column(0, i) = rsST.Fields("SubTopicID").Value Then 
     Me.cmbSubTopic.SetFocus 
     Me.cmbSubTopic.Selected(i) = True 
     Exit For 
    End If 
Next i 

Это дает ошибку говоря:

Введенный текст не является элементом списка

Я также попытался с помощью этого :

Me.cmbSubTopic = Me.cmbSubTopic.Selected(i) 

Это выбирает элемент в ComboBox, но также записывает значение я в поле ID таблицы, которую я не хочу.

+0

Как правило, вам нечего делать для combobox, имеющего источник управления, поскольку его значение равно значению поля underlyng table. – jacouh

+0

Есть ли способ заблокировать вставку данных в таблицу в событии OnLoad формы, а затем разрешить вставку в событие AfterUpdate из выпадающего списка. – ksagar

ответ

8

Предполагая, что первый столбец комбо, SubTopicID, также является свойством «связанного столбца» комбо, оно используется в качестве свойства столбца .Value. Это означает, что вам нужно назначить значение .Value, чтобы выбрать подходящую комбинационную строку.

Me.cmbSubTopic.Value = rsST.Fields("SubTopicID").Value 

Этот подход прост, но я не уверен, что это подходящее решение для вашей ситуации. Мы ничего не знаем о вашем наборе rsST --- Я предположил, что поле SubTopicID в текущей строке набора записей - это значение, которое вы хотите выбрать в комбо. Если я неправильно понял этот момент, нам нужно выяснить что-то другое.

Если комбо связано с полем в источнике записи формы, это предложение также изменит сохраненное значение. Если вы этого не хотите, «развяжите» комбо - другими словами, введите свой элемент управления Source.

Смежные вопросы