我有一个令人困惑的问题,我一直在努力解决数小时但无济于事。
我们的(普通观众)应用程序将最新版本的 MS-Access 数据库中的查询与最终用户当前安装的版本和更新/同步进行比较。相应的数据库。尽管此功能一直有效,但现在已损坏。我采用了最简单的测试来证明这种行为。OLEDB 未返回正确数量的查询。
打开 Access 2007 数据库后,我显示了查询的位置和正确数量:
?CurrentDB.Name
C:\Users\Ron\Documents\Database4.accdb
?CurrentDB.QueryDefs.Count
1
以下简单表单调用 OleDbSchemaTable 方法,但返回错误的行数/查询数 (=0):
Public Class Form1
Private ConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ron\Documents\Database4.accdb"
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim dbo As DataTable = GetSchemaInfo()
Debug.Print("Number of queries=" & dbo.Rows.Count)
End Sub
Private Function GetSchemaInfo()
Try
Dim db As DataTable
Using conn = New OleDb.OleDbConnection(ConnStr)
conn.Open()
db = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Procedures, Nothing)
End Using
Return db
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
End Try
End Function
End Class
即时窗口:查询数=0
我已经尝试了我能想到的一切(压缩/修复,在不同的机器上运行)。不幸的是,我只有一份 Access 2007 可供测试。这可能是病毒吗?
任何和所有的想法都值得赞赏。