【问题标题】:Get List of Queries in Project - MS Access获取项目中的查询列表 - MS Access
【发布时间】:2012-06-08 14:03:45
【问题描述】:

我有一个非常千篇一律的数据库(非常相似、非常重复的查询),它进入一个模块化报告(即它们都返回具有不同标准的相同内容)。

大约有 100 个这样的查询,所以我使用组合框来显示查询,这些查询会发送到报告中(通过 OpenArgs)。

我需要生成项目中的查询列表(只是名称)。我希望组合框的控制源是这个查询列表。

如果我必须做一个连接Value List源或Query/Table源类型的字符串并不重要,唯一重要的是绑定列包含"qryName"

到目前为止我所拥有的:

For Each qry In CurrentDb.QueryDefs
    list = list & ";" & """" & qry.Name & """" 
    'String in the form "qryName";"qryAnotherQuery";"qryNextQuery"
Next

但显然值列表有约 2000 个字符的限制,所以如果我有很多查询,我不能使用值列表吗?另请注意:qry.Name 也会返回类似“~sq_cTableName”的内容,而不仅仅是我的查询......这是一个问题。我只想查询。

有什么想法吗?只要我可以将查询名称发送到我的报告的 OpenArgs,我也愿意以其他方式在没有组合框的情况下显示此信息。

【问题讨论】:

    标签: ms-access report names openargs


    【解决方案1】:

    如果您对MSysObjects 具有读取权限,则可以将此查询用作组合框的行源。

    SELECT m.Name
    FROM MSysObjects AS m
    WHERE m.Type=5 AND m.Name Not ALike "~%"  
    ORDER BY m.Name;
    

    条件m.Name Not ALike "~%" 从结果集中排除临时和隐藏查询。

    如果您没有MSysObjects 的读取权限,则必须创建一个回调函数,然后将其用作组合框的行源。如果您必须走这条路,请参阅 Allen Browne 的此示例,该示例列出了报告对象并将其更改为列出查询:List Box of Available Reports

    【讨论】:

    • 这正是我所需要的;显示我想要的确切内容,并允许我快速轻松地添加异常(更多 Not Alike "")语句,如果我有一些用户不需要查看的自己的查询。效果很好。谢谢!
    【解决方案2】:

    列表框允许您在循环查询时使用Me.lstBox.AddItem qryName
    然后,您可以使用 ItemsSelected 和 ItemData 的组合来查找查询的名称

    For Each varItm In lstBox.ItemsSelected
        Debug.Print lstBox.ItemData(varItm)
    Next varItm
    

    或者如果您不允许多选,

    lstBox.ItemData(lstbox.ItemsSelected(0))
    

    会给你选择的单个项目

    【讨论】:

    • 我会试一试,但我仍然没有办法“遍历我的查询”。我不确定用于查找数据库的所有查询名称的语法是什么。我上面的代码找到了所有不应该显示的表格等。
    • 快速而肮脏的方法 - 您必须查看返回的内容以查看要排除的内容:Select Name, Type from MSysObjects where Type =5; - 不使用它作为组合框源的原因是它包含一些 TMP查询也
    • AddItem 方法在这种情况下可能无济于事,因为AddItem 需要“值列表”作为行源类型(请参阅访问帮助主题)。 OP 已经告诉我们他的查询名称的组合长度超过了值列表的容量。唯一可行的方法是,如果他可以通过排除隐藏查询的名称来低于该限制。
    • 呸——我没有意识到列表框也有同样的限制。我站得更正。使用下面的@HansUp 解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多