在使用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 = flexResizeBothEnd Sub
?
出现 的错误如下(ADO VBA代码取得的结果与Access数据库查询实际对比)

?
经过不断尝试与分析,终于发现,原来这个少掉的Access查询,使用了一个Access模块中的自定义函数
这样导致 无法识别到这个查询
将查询中用到的自定义函数删除后,则成功获取了
?

……