0

我很难想出一个好的标题,但我希望我能更好地解释这种情况。我目前有一个条件为(“11:00 - 21:00”或“11:01 - 21:00”)的查询,执行时效果很好,但是我在多个查询中需要这个条件,因此我决定提出如下功能

Function timeIntervals()

    timeIntervals = "11:00 - 21:00" & " Or " & "11:01 - 21:00"

End Function

并在每个查询中调用它,因此每次我需要修改这个字符串时,我都可以通过那个实例来完成,但是当在上面运行这个字符串时它不起作用,我假设它是由 Or 上的引号引起的,我尝试了三倍引用 """ 和 chr(34),但是它不起作用,有人可以建议解决方法吗?谢谢!

4

2 回答 2

3

正如 Remou 指出的那样,您将无法使其正常工作。如果你真的想通过 VBA 函数进行检查,你可以这样写:

Function timeIntervals(Value) As Boolean
    If Value = "11:00 - 21:00" Or Value = "11:01 - 21:00" Then
        timeIntervals = True
    End If
End Function

传递您要检查的值,如果结果函数为真,则显示该行。类似的东西:where timeIntervals(myvalue) = true

不过,最好的解决方案可能是为 timeIntervals 制作一个表格。然后在您的查询中简单地编写如下内容:

Where MyValue IN(Select timeValue from timeIntervals)

使用后一种方法,您可以更新将更新所有用户结果的表,并且不需要重新发布您的前端。

于 2012-12-18T18:11:48.487 回答
0

无论你用引号做什么,这都行不通,因为Or它将作为字符串返回,而不是你想要的布尔值或。您可以使用带有两个文本框的隐藏表单,然后您可以说:

WHERE timeIntervals = Forms!MyForm!Text1 Or Forms!MyForm!Text2

只要表单保持打开状态,您的查询以及基于它们的任何表单或报告都将起作用,此外,无需修改代码即可轻松更改间隔。

于 2012-12-18T18:02:20.863 回答