我很难想出一个好头衔,但我希望我能更好地解释这个情况。我目前有一个标准的查询(“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),但它不起作用,有人可以建议一个工作,谢谢你!
答案 0 :(得分: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
传递要检查的值,如果结果函数为true,则显示该行。类似于:where timeIntervals(myvalue) = true
。
可能最好的解决方案是为timeIntervals创建一个表。然后在你的查询中简单地写一下:
Where MyValue IN(Select timeValue from timeIntervals)
使用后一种方法,您可以更新表格,该表格将更新所有用户的结果,并且不需要重新发布您的前端。
答案 1 :(得分:0)
无论你使用引号做什么,这都行不通,因为Or
将作为字符串返回,而不是布尔或你想要的。您可以使用带有两个文本框的隐藏表单,然后您可以说:
WHERE timeIntervals = Forms!MyForm!Text1 Or Forms!MyForm!Text2
只要表单保持打开状态,您的查询以及基于它们的任何表单或报表都可以使用,此外,在不修改代码的情况下更改间隔非常容易。