当前位置: 主页 > Office办公 > 其他专区 > Access > 使用ADO的OpenSchema或ADOX无法读取所有Access数据库里所有查询名称列表的问题

使用ADO的OpenSchema或ADOX无法读取所有Access数据库里所有查询名称列表的问题

  • 2021-10-24
  • 来源/作者: 菜鸟图库/ 菜鸟图库
  • 446 次浏览

在使用ADO的OpenSchema或ADOX 读取Access数据库里所有查询的清单时

发现结果总是少了一个查询,Access查询列表中有5个,但用VBA 或VB代码读出来只有4个,少了一个


 

ADO读取Access数据库所有查询名的代码如下


 

Private Sub OpenDBSchema(FileName As String)
    Dim conn As New ADODB.Connection
    Dim mProvider As String
    Dim fso As New FileSystemObject
    If Not fso.FileExists(FileName) Then Set grid1.DataSource = Nothing
    Select Case LCase(fso.GetExtensionName(FileName))
    Case "mdb"
        mProvider = "Microsoft.Jet.OLEDB.4.0"
    Case "accdb"
        mProvider = "Microsoft.ACE.OLEDB.12.0"
    End Select
    conn.ConnectionString = "Provider=" & mProvider & ";Data Source=" & FileName & ";Persist Security Info=False;"
    conn.Open
    Set grid1.DataSource = conn.OpenSchema(adSchemaTables)
    grid1.AllowUserResizing = flexResizeBoth
End Sub


 

出现 的错误如下(ADO VBA代码取得的结果与Access数据库查询实际对比)

使用ADO的OpenSchema或ADOX无法读取所有Access数据库里所有查询名称列表的问题


 

经过不断尝试与分析,终于发现,原来这个少掉的Access查询,使用了一个Access模块中的自定义函数

这样导致 无法识别到这个查询

将查询中用到的自定义函数删除后,则成功获取了


 

 

使用ADO的OpenSchema或ADOX无法读取所有Access数据库里所有查询名称列表的问题