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

【使用ADO的OpenSchema或ADOX无法读取所有Access数据库里所有查询名称列表的问题】分享给互联网技能从业者学习和参考。

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

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


 

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


 

Private Sub OpenDBSchema(FileName As String)Dim conn As New ADODB.ConnectionDim mProvider As StringDim fso As New FileSystemObjectIf Not fso.FileExists(FileName) Then Set grid1.DataSource = NothingSelect Case LCase(fso.GetExtensionName(FileName))Case "mdb"mProvider = "Microsoft.Jet.OLEDB.4.0"Case "accdb"mProvider = "Microsoft.ACE.OLEDB.12.0"End Selectconn.ConnectionString = "Provider=" & mProvider & ";Data Source=" & FileName & ";Persist Security Info=False;"conn.OpenSet grid1.DataSource = conn.OpenSchema(adSchemaTables)grid1.AllowUserResizing = flexResizeBothEnd Sub


 

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


 

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

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

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


 

 

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