如何从函数发送查询字符串

时间:2012-12-18 17:57:31

标签: vba ms-access ms-access-2007

我很难想出一个好头衔,但我希望我能更好地解释这个情况。我目前有一个标准的查询(“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),但它不起作用,有人可以建议一个工作,谢谢你!

2 个答案:

答案 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

只要表单保持打开状态,您的查询以及基于它们的任何表单或报表都可以使用,此外,在不修改代码的情况下更改间隔非常容易。