我有一个从表中返回数据的子表单。但是,我想通过使用filter属性进一步过滤此数据。
我有一组单选按钮,组合框和一个case语句,根据单选按钮选择将我想要使用的变量设置为正确的值
我填写变量的代码完美无缺,但我不能使用vba来设置过滤器,除非我手动输入我想要的字符串。
我认为我的问题是我的过滤字符串在语法上是不正确的,但我不确定如何。可能与文本分隔符有关。
Forms![frmPendingActions]![qryPendingAction subform].Form.Filter = Filterby = FilterCrit
Forms![frmPendingActions]![qryPendingAction subform].Form.FilterOn = True
假设此问题是Filterby = [Reporter]和FilterCrit = Fake Name
答案 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
我希望这会有所帮助。