【发布时间】:2014-01-23 19:15:45
【问题描述】:
我有一个搜索表单,其中包含与表格关联的空白字段、四个条件搜索框和一个按钮,用于从搜索框中获取输入、搜索表格并在表格的空白字段中填充结果。
到目前为止,只要所有四个条件框都不为空,它就可以工作。
我使用过滤器来实现这一点,只要所有四个框都不为空,这里的代码就可以工作。 (我的标准框如下:一个名为“关键字”的文本框和三个名为 HRCombo、BuildingCombo 和 RoomCombo 的组合框,它们关联的字段如下:“项目描述”“人力资源持有人”“建筑”“ Room") 我的第一行“Me.Filter = ...”被拆分,以便于查看。
Me.Filter = "[Item Description] Like " & Chr(34) & Me.Keyword & "*" & Chr(34) & "
AND [HR Holder] = '" & Me.HRCombo & "'" & " AND [Building] = '" & Me.BuildingCombo
& "'" & " AND [Room] = '" & Me.RoomCombo & "'"
Me.FilterOn = True
Me.Requery
无论输入了哪种标准框组合,我都需要它能够进行搜索。有人建议使用 if 语句来执行以下操作: 创建四个字符串,每个条件框一个。使用 4 个 if 语句来检查框是否为空 - 如果为空,则为其字符串分配一个星号,如果它不为空,则将我用于上述 Me.Filter 语句的值分配给每个框的字符串。然后,使用 Me.Filter 并在最后连接四个字符串。
这是我用于此目的的代码,但以我的知识有限,我无法让它工作。
Dim StrA as String, StrB as String, StrC as String, StrD as String
If Me.Keyword is null then
StrA = "*"
else
StrA = [Item Description] Like " & Chr(34) & Me.Keyword & "*" & Chr(34)
End If
If Me.HRCombo is null then
StrB = "*"
else
StrB = [HR Holder] = '" & Me.HRCombo & "'"
End If
If Me.BuildingCombo is null then
StrC = "*"
else
StrC = [Building] = '" & Me.BuildingCombo & "'"
End If
If Me.RoomCombo is null then
StrD = "*"
else
StrD = [Room] = '" & Me.RoomCombo & "'"
End If
Me.Filter = "StrA & " AND "StrB & " AND "StrC &" AND "StrD"
Me.FilterOn = True
Me.Requery
就像我说的那样,我的知识有限,所以我确定可能缺少引号和逗号,或者太多了。有什么想法吗?
【问题讨论】: