0

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

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

我用于填充变量的代码运行良好,但我不能使用 vba 来设置过滤器,除非我手动输入我想要的字符串。

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

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

假设这个问题 Filterby=[Reporter] 和 FilterCrit= Fake Name

4

1 回答 1

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

我希望这有帮助。

于 2012-06-18T08:42:47.887 回答