【问题标题】:Query criteria: from public variable or from form查询条件:来自公共变量或来自表单
【发布时间】:2013-03-28 20:25:53
【问题描述】:

经过几个小时的搜索,我找不到任何解决我遇到的这个小问题的方法。

我有一个从表单中检索其条件之一的查询。我已经从查询中正确引用了表单上的值,它可以工作,但我想做的有点复杂:当表单关闭时,我想使用“默认值”启动查询。

我尝试了两种不同的方式: a) 在查询条件中定义“IIf”:我需要一个函数来检查我从中检索值的表单是否打开。 b) 使用默认值定义公共变量,该值将由以下形式更改:我不知道在何处/何时初始化变量的值。

有没有人对如何做到这一点有更好的想法?

TL;DR:查询在打开时从表单中获取标准。如果表单已关闭,则查询使用默认值。帮助!

【问题讨论】:

    标签: forms ms-access


    【解决方案1】:

    您可以在模块中创建一个 VBA 函数来执行此操作:

    Function MyCriterion() As Long
    
      MyCriterion = 1234                           '   default value
    
      If CurrentProject.AllForms("MyForm").IsLoaded Then
    
          MyCriterion = Forms("MyForm").MyControl.Value
    
      End If
    
    End Function
    

    【讨论】:

    • 谢谢!它完美无缺! “On Error Resume Next”正是我所缺少的。
    • 还有一个问题,如果你能帮助我:我希望“MyCriterion”成为通配符作为默认值,但是当我输入MyCriterion = "*" 时,查询不会将其识别为通配符。您对如何将通配符传递给 VBA 的查询有任何建议吗?谢谢!
    • 我将 MyCriterion 定义为返回 Long。如果你想使用*作为默认值,你应该将它定义为返回String并使用LIKE MyCriterion
    • 谢谢!我忘了在查询条件上加上“LIKE”。
    • On Error Resume Next 几乎从来都不是一个好主意,只能作为最后的手段,在这种情况下,您可以非常轻松地检查表单是否已加载CurrentProject.AllForms("MyForm").IsLoaded
    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多