2016-07-15 2 views
0

Извинения, если у меня неправильная терминология. Я пытаюсь создать форму, в которой пользователь выбирает поле из выпадающего списка, а затем вводит текст поиска в текстовое поле. Затем форма должна искать в таблице записи, соответствующие тексту в поле, указанном в поле со списком.Значение пересылки combobox как поле

Однако у меня в настоящее время нет работы. Я знаю, где ошибка, но не может ее исправить.

Текущий код:

Private Sub btn_Search_Click() 

Dim strSearchTerm As String 
Dim strComboField As String 

strComboField = Me!cmb_src 

strSearchTerm = "SELECT Models.ID, Models.[Model Name], Models.[Model Brand], Models.[Model Category] " _ 
    & "FROM Models " _ 
    & "Where Fields(strComboField) LIKE '*" & Me.txtSearch & "*' " _ 
    & "ORDER BY Models.[Model Name]; " 

Me.sub_ModelList.Form.RecordSource = strSearchTerm 
Me.sub_ModelList.Form.Requery 

End Sub

Я считаю, что ошибка в строке

& "Where Fields(strComboField) LIKE '*" & Me.txtSearch & "*' " _ 

Как заменить Fields (strComboField) с именем поля [Имя модели ] разрешает штраф.

Любая помощь очень ценится

Спасибо

+0

попробовать ' & "Where Fields" & strComboField & "LIKE '*" & Me.txtSearch & "*'" _'. Тем не менее, я не уверен, что это единственная ошибка, которая у вас есть, «strComboField» получает значение, это не способ чтения из Combo-Box или List-Box –

+0

, спасибо, что это не сработало, но как вы говорите, может быть, из-за того, что я неправильно читаю из выпадающего списка. Я посмотрю, смогу ли я это решить. ошибка, которая дала мне (отсутствовал operator0 в выражении запроса «Fields Model Name LIKE» * joystick * ». – TerrorPenguin

+0

, когда вы запускаете код с F8, правильно ли значение' strComboField' правильно считывает значение из комбинированного поля user-form? это combo-box, list-box или текст? –

ответ

0

Попробуйте использовать это:

"Where [Model Name] LIKE '*" & Me.txtSearch & "*' " _ 

или просто создать базовый запрос с WHERE следующим образом:

Where [Model Name] LIKE '* & Forms![frm_YourForm]![cmb_src] & *' 

перезапроса форму нажав кнопку «Поиск», остальная часть кода VBA не требуется

ОБНОВЛЕНИЕ: Извините, пропустили пункт о выборе поля для поиска. В этом случае, когда должен быть

"Where [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' " 

После

Me.sub_ModelList.Form.RecordSource = strSearchTerm 

дополнительный Requery не требуется, изменение Recodsource автоматически к повторному исполнению запроса форму

+0

Я не уверен, что это то, что я хочу, чтобы было установлено [Имя модели] пользователем через поле со списком как [Имя модели] ИЛИ [Модельный бренд] или [Категория модели]. Текст, на котором основан поиск, находится в текстовом поле txtsearch. То, что я пытаюсь сделать, это поиск me.txtbox в поле, указанное в поле со списком. – TerrorPenguin

+0

Извиняюсь, пропустил пункт о выборе поля для поиска, второй ответ был верным –

+0

Не нужно извиняться, спасибо за вашу помощь – TerrorPenguin

2

Если не быть:

strSearchTerm = "SELECT Models.ID, Models.[Model Name], Models.[Model Brand], Models.[Model Category] " _ 
    & "FROM Models " _ 
    & "Where [" & strComboField & "] LIKE '*" & Me.txtSearch & "*' " _ 
    & "ORDER BY Models.[Model Name]; " 
+0

Да! Это работает! большое спасибо – TerrorPenguin

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