我有一个非常千篇一律的数据库(非常相似、非常重复的查询),它进入一个模块化报告(即它们都返回具有不同标准的相同内容)。
大约有 100 个这样的查询,所以我使用组合框来显示查询,这些查询会发送到报告中(通过 OpenArgs
)。
我需要生成项目中的查询列表(只是名称)。我希望组合框的控制源是这个查询列表。
如果我必须做一个字符串连接的 Value List
源或 Query/Table
源类型并不重要,唯一重要的是绑定(bind)列包含 "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,我也愿意以其他方式在没有组合框的情况下显示此信息。
最佳答案
如果您对 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 .
关于ms-access - 获取项目中的查询列表 - MS Access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10882317/