2016-12-30 34 views
0

如何爲MS-Access數據庫標識「提供者特定模式」?如何獲取access.mdb的「提供程序特定模式」?

架構下面的例子:

{947bb102-5d43-11d1-bdbf-00c04fb92675} 
+0

使用Google提供的特定模式在第一頁上提供http://allenbrowne.com/func-ado.html。你應該爲自己嘗試一些代碼,然後發佈一個更好的問題。你應該提供研究證據。 –

+0

我GOOGLE了這個,發現了幾個職位,說明它可以用於什麼,但沒有明確說明如何獲得數字。關於如何達到這個數字的一​​些背景將非常感謝。謝謝。 – Chewy1985

回答

0

谷歌搜索{947bb102-5d43-11d1-bdbf-00c04fb92675}變成了這個頁面http://allenbrowne.com/func-ado.html。一個例子用法是網頁上找到(其實不過是從https://support.microsoft.com/en-gb/kb/198755複製)

Option Explicit 

Function ShowUserRosterMultipleUsers() 
    'Source: kb 198755. 
    Dim cn As New ADODB.Connection 
    'Dim cn2 As New ADODB.Connection 
    Dim rs As New ADODB.Recordset 
    Dim i, j As Long 

    cn.Provider = "Microsoft.Jet.OLEDB.4.0" 
    cn.Open "Data Source=C:\Data\Northwind2003.mdb" 

    'cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Data\Northwind2003.mdb" 

    ' The user roster is exposed as a provider-specific schema rowset 
    ' in the Jet 4 OLE DB provider. You have to use a GUID to 
    ' reference the schema, as provider-specific schemas are not 
    ' listed in ADO's type library for schema rowsets 

    Set rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 

    'Output the list of all users in the current database. 

    Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, "", rs.Fields(2).Name, rs.Fields(3).Name 

    While Not rs.EOF 
     Debug.Print rs.Fields(0), rs.Fields(1), rs.Fields(2), rs.Fields(3) 
     rs.MoveNext 
    Wend 
End Function 

調查OpenSchema方法給出了兩個鏈接 https://msdn.microsoft.com/en-us/library/ms676705(v=vs.85).aspx | http://www.w3schools.com/asp/met_conn_openschema.asp 這些鏈接中的第二個似乎表明,可以打開各種各樣的模式,但如果需要提供程序特定的模式,則必須通過adSchemaProviderSpecific,然後通過GUI。在上面的Microsoft鏈接中,它表示

「提供程序查詢的GUID未由OLE DB規範定義。」

那麼這個模式{947bb102-5d43-11d1-bdbf-00c04fb92675}數字來自哪裏呢?在我看來,它來自Jet數據庫引擎OLE DB提供程序的開發人員。

有趣的是,你的問題暗示每個數據庫(.mdb文件)有一個guid。事實上,我相信它是在OLE DB提供商,所以我認爲你的問題是誤導。

相關問題