Использование переменных в строке фильтра

У меня есть подчиненная форма, которая возвращает данные из таблицы. Однако я хочу дополнительно отфильтровать эти данные, используя свойство фильтра.

У меня есть группа переключателей, полей со списком и оператор case, который устанавливает переменные, которые я хочу использовать, в правильные значения в зависимости от выбора переключателя.

Мой код для заполнения переменных работает отлично, но я не могу использовать vba для установки фильтра, пока не наберу нужную строку вручную.

Я предполагаю, что моя проблема в том, что моя строка фильтра синтаксически неверна, но я не уверен, как это сделать. Вероятно, что-то делать с разделителями текста.

Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = Filterby = FilterCrit
Forms![frmPendingActions]![qryPendingAction subform].Form.FilterOn = True

Предположим для этого вопроса, что Filterby=[Reporter] и FilterCrit= Fake Name


person VBwhatnow    schedule 18.06.2012    source источник


Ответы (1)


Да, я думаю, проблема связана с разделителями текста. Код должен выглядеть примерно так:

Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = "[Reporter] ='" &  FilterCrit  & "'"

Фильтр должен быть построен точно так же, как предложение where без слова where. Если столбец, по которому вы фильтруете, имеет текстовый тип данных, то критерии должны быть заключены в одинарные или двойные кавычки. Если столбец представляет собой тип данных даты, он должен быть заключен в #. Если столбец является числовым типом данных, его не нужно заключать.

Если вы не хотите всегда фильтровать по столбцу Reporter, вы можете создать строку, используя операторы if или операторы select case, а затем применить эту строку к фильтру формы.

Например:

If [somecondition] Then
   strFilter="[Reporter]='" & FilterCrit & "'"
Else
   strFilter="[ID]=" & 0
End If
Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = strFilter

Надеюсь, это поможет.

person Mark3308    schedule 18.06.2012
comment
Спасибо, это многообещающе. Фильтр работает правильно, но я думаю, что вы немного неправильно поняли мой вопрос. Столбец, по которому я хочу отфильтровать, также является переменной, как мне с этим справиться? - person VBwhatnow; 18.06.2012
comment
Между прочим, столбец является текстовым типом данных. - person VBwhatnow; 18.06.2012
comment
Неважно, я адаптировал остальную часть своего кода вокруг вашего утверждения. - person VBwhatnow; 18.06.2012