在过滤字符串中使用变量

时间:2012-06-18 07:58:10

标签: ms-access vba

我有一个从表中返回数据的子表单。但是,我想通过使用filter属性进一步过滤此数据。

我有一组单选按钮,组合框和一个case语句,根据单选按钮选择将我想要使用的变量设置为正确的值

我填写变量的代码完美无缺,但我不能使用vba来设置过滤器,除非我手动输入我想要的字符串。

我认为我的问题是我的过滤字符串在语法上是不正确的,但我不确定如何。可能与文本分隔符有关。

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

假设此问题是Filterby = [Reporter]和FilterCrit = Fake Name

1 个答案:

答案 0 :(得分:2)

是的我认为问题与文本分隔符有关。代码应类似于以下内容:

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

我希望这会有所帮助。