私は、何時間も無駄に取り組んできた厄介な問題を抱えています。
私たちの (一般向け) アプリケーションは、MS-Access データベースの最新バージョンのクエリを、エンド ユーザーが現在インストールしているバージョンおよび更新/同期と比較します。それに応じてDB。この機能は機能していましたが、現在は壊れています。動作を実証するために、最も簡単なテストに頼りました。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 のコピーは 1 つしかありません。これはウイルスでしょうか?
ありとあらゆるアイデアを歓迎します。