office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請(qǐng)用微信掃碼)

        

Access使用ADOX刷新鏈接表的函數(shù)

2002-08-06 21:06:00
朱亦文-Office交流網(wǎng)
原創(chuàng)
7337

下面這個(gè)函數(shù) 使用時(shí)發(fā)現(xiàn)有些問題,然后在下文中重新改進(jìn)了這個(gè)函數(shù)。測(cè)試通過。

Public Sub RefreshLinkedExternalTable(strTargetDB As String, strProviderString As String, strSourceTbl As String, strLinkTblName As String) 
 
' strTargetDB: 被鏈接的數(shù)據(jù)庫(kù)路徑名 
' strProviderString: 連接字符串 
' strSourceTbl: 被鏈接的源表名稱 
' strLinkTblName: 要重設(shè)鏈接的鏈接表的名稱 
 
Dim catDB  As ADOX.Catalog 
Dim tblLink As ADOX.Table 
Dim i As Integer 

Set catDB = New ADOX.Catalog 
catDB.ActiveConnection = CurrentProject.Connection 
 
Set tblLink = catDB.Tables(strLinkTblName) 
 
With tblLink 
.Properties("Jet OLEDB:Create Link") = True 
.Properties("Jet OLEDB:Link Datasource") = strTargetDB 
.Properties("Jet OLEDB:Link Provider String") = strProviderString 
.Properties("Jet OLEDB:Remote Table Name") = strSourceTbl 
End With 
 
Set catDB = Nothing 

End Sub 


但是在 
.Properties("Jet OLEDB:Create Link") = True 
.Properties("Jet OLEDB:Remote Table Name") = strSourceTbl 
報(bào)錯(cuò)! 

 
zyz
已通過的代碼:

Public Sub NewLinkedExternalTableMdb()
    
    ' strTargetDB: 被鏈接的數(shù)據(jù)庫(kù)路徑名
    ' strProviderString: 連接字符串
    ' strSourceTbl: 被鏈接的源表名稱
    ' strLinkTblName: 要重設(shè)鏈接的鏈接表的名稱
    ' 作者:朱亦文

    Dim strTargetDB() As String
    Dim strProviderString() As String
    Dim strSourceTbl() As String
    Dim strLinkTblName() As String
    
    Dim catDB   As ADOX.Catalog
    Dim tblLink As ADOX.Table
    Dim tmpLink As ADOX.Table
    
    Dim i As Integer
    Dim j As Integer

    Set catDB = New ADOX.Catalog
    catDB.ActiveConnection = CurrentProject.Connection
    
    i = catDB.Tables.Count
    
    ReDim strTargetDB(i)
    ReDim strProviderString(i)
    ReDim strSourceTbl(i)
    ReDim strLinkTblName(i)
    
    i = 1
    
    For Each tmpLink In catDB.Tables
        
        If tmpLink.Properties("Jet OLEDB:Create Link") Then
            If Trim(tmpLink.Properties("Jet OLEDB:Remote Table Name")) <> "" Then
            
                Debug.Print tmpLink.Name & " |  " & tmpLink.Properties("Jet OLEDB:Remote Table Name")
                
                strLinkTblName(i) = tmpLink.Name
                strTargetDB(i) = tmpLink.Properties("Jet OLEDB:Link Datasource")
                strProviderString(i) = tmpLink.Properties("Jet OLEDB:Link Provider String")
                strSourceTbl(i) = tmpLink.Properties("Jet OLEDB:Remote Table Name")
                
                Do While InStr(1, strTargetDB(i), "\") <> 0
                    strTargetDB(i) = Mid(strTargetDB(i), InStr(1, strTargetDB(i), "\") + 1, Len(strTargetDB(i)))
                Loop
                
                strTargetDB(i) = CurrentProject.Path & "\" & strTargetDB(i)
                
                i = i + 1
            End If
        End If
    
    Next
    
    j = i - 1
    
    For i = 1 To j
        catDB.Tables.Delete strLinkTblName(i)
            
        Set tblLink = New ADOX.Table
            
        With tblLink
            .Name = strLinkTblName(i)
            Set .ParentCatalog = catDB
                
            .Properties("Jet OLEDB:Create Link") = True
            .Properties("Jet OLEDB:Link Datasource") = strTargetDB(i)
            .Properties("Jet OLEDB:Link Provider String") = strProviderString(i)
            .Properties("Jet OLEDB:Remote Table Name") = strSourceTbl(i)
        End With
                
        catDB.Tables.Append tblLink
        Set tblLink = Nothing
    Next
    Set catDB = Nothing

End Sub

 
 

(DAO_鏈接表_ODBC-相關(guān)文章技巧鏈接):
局域網(wǎng):ODBC連接SQL SEVER詳解
用代碼通過ODBC刷新鏈接(mdb+SQL SEVER2000)
如何用代碼鏈接帶有密碼的數(shù)據(jù)庫(kù)中的表
分享
文章分類
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問