2016-12-30 15 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提供商,所以我认为你的问题是误导。

相关问题