ms-access - QueryDefs 返回 ~sq_rrptStatTabRout

标签 ms-access vba ms-access-2007

情况: 我需要查找每个查询的第一个字段。创建下面列出的代码并执行它后,我收到以下 Debug.Print:

~sq_rrptStatTabRout
qryBridgeSub
qryCentTabRout

我期望打印最后两个,但我不太确定为什么第一个打印出来,因为 rptStatTabRout 确实作为报告存在于数据库中。

问题:有没有一种简单的方法来解释这个问题或消除它?

代码:

Private Sub Command47_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim queries As DAO.QueryDefs
Dim query As DAO.QueryDef
Dim queryname As String
Dim fld As DAO.Field

Set db = CurrentDb
Set queries = db.QueryDefs

' loop through each query
For Each query In queries
    On Error Resume Next

    queryname = query.name
    Debug.Print queryname
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & queryname & "", dbOpenDynaset)
    fld = rs.Fields(0).name

    MsgBox fld

Next

End Sub

最佳答案

您似乎想忽略名称以 ~ 开头的已保存查询。使用 If 条件忽略它们。

If Not query.Name Like "~*" Then
   ' find the first field
End If

请注意,如果您希望将计算限制为仅 SELECT 查询,请检查每个查询的 .Type 属性。 SELECT 查询的类型为 dbQSelect (0)。如果您想要处理其他查询类型,请查看 Access 帮助系统中的QueryDef.Type 属性主题。

如果您想知道~sq_rrptStatTabRout查询来自何处,请检查rptStatTabRout报告的记录源属性。当源是 SELECT 语句时,Access 会将该语句保存为隐藏查询。 ~ 前缀阻止其显示在导航 Pane 中。

当您使用 SELECT 语句作为组合框或列表框的行源时,也会发生同样的情况。

关于ms-access - QueryDefs 返回 ~sq_rrptStatTabRout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591855/

相关文章:

excel - 如果名称等于不同工作表上的字符串,则将值加 1

ms-access - 为什么 Access 要您标识链接表上的主键?

database - 在 JSP 页面中连接 MS access 数据库

ms-access - 复制时在所有选项卡上可见的按钮

ms-access - 创建表单以在多个表中添加记录

vba - 比较两列,但只有前 4 个字母 - vba excel

vba - 逐个读取单元格并创建工作表

database - Access 文件对话框导入 - 导入多个 Excel 选项卡/工作表

sql - 使用连续编号对重复项进行编号

sql - 存取减法时间