我有一個令人困惑的問題,我一直在努力許多小時無濟於事。VB.NET OleDB MSAccess GetOleDBSchema返回的查詢數量不正確(過程)
我們的(普通受衆)應用程序將我們MS-Access數據庫的最新版本中的查詢與當前安裝的版本和更新/同步的最終用戶進行比較。相應的數據庫。儘管此功能一直在運行,但現在已經被破壞。我採取了最簡單的測試來證明這種行爲。 OLEDB不返回正確數量的查詢。
打開Access 2007數據庫後,我顯示查詢的位置和正確的號碼:
?CurrentDB.Name
C:\Users\Ron\Documents\Database4.accdb
?CurrentDB.QueryDefs.Count
1
下面的簡單形式調用OleDbSchemaTable方法,但返回的錯誤行數/查詢(= O) :
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的測試版本。這可能是病毒嗎?
任何和所有的想法,讚賞。
非常感謝(HansUp和Remou)。我不知道爲什麼使用「過程」先前在VB.NET OLEDB中同時處理Action和Select查詢。 –
我也不清楚,羅恩。如果之前的'SELECT'查詢包含'ORDER BY'子句,則它們將是過程而不是從模式角度來看。 – HansUp
這聽起來合乎邏輯。只要它是一個(VIEW)或另一個(PROCEDURE),我終於可以解決這個問題。再次感謝! –