Làm th? nào đ? relink back-end b?ng v?i s? ki?m soát h?p tho?i ph? bi?n trong Access 2000

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 209862 - Xem s?n ph?m mà bài này áp d?ng vào.
Đ?i v?i m?t phiên b?n Microsoft truy c?p 97 c?a bài vi?t này, xem 181076.
Nâng cao: Đ?i h?i chuyên gia m? hóa, kh? năng tương tác và multiuser k? năng.

Bài vi?t này ch? áp d?ng cho m?t cơ s? d? li?u Microsoft Access (.mdb).

Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này cho b?n th?y làm th? nào đ? s? d?ng các H?p tho?i chung ki?m soát đ? làm m?i đư?c liên k?t b?ng trong cơ s? d? li?u c?a b?n. Các H?p tho?i chung ki?m soát có s?n v?i Microsoft Office 2000 Developer Edition Công c?. Các b?ng đư?c liên k?t có th? n?m trong m?t ho?c nhi?u cơ s? d? li?u back-end.

Cho m?t ví d? v? m?t phương pháp khác nhau đ? relink b?ng có s? d?ng Microsoft Windows ?ng d?ng l?p tr?nh ch?c năng giao di?n (API), đ? c?p đ?n chương tr?nh m?u nhà phát tri?n gi?i pháp (Solutions9.mdb.) Đ? có đư?c Solutions9.mdb, b?m vào s? bài vi?t dư?i đây đ? xem các bài vi?t trong các Cơ s? ki?n th?c Microsoft:
248674 ACC2000: Đơn đ?t hàng và cơ s? d? li?u m?u nhà phát tri?n gi?i pháp có s?n trên m?ng nhà phát tri?n Microsoft (MSDN)
M? cơ s? d? li?u Solutions9.mdb, ch?n S? d?ng nhi?u cơ s? d? li?u trong các Ch?n m?t th? lo?i c?a Ví d? h?p, và sau đó b?m Liên k?t b?ng lúc kh?i đ?ngtrong các Ch?n m?t ví d? h?p.

THÔNG TIN THÊM

Microsoft cung c?p l?p tr?nh ví d? đ? minh ho? ch?, không có b?o hành ho?c th? hi?n hay ng? ?. Đi?u này bao g?m, nhưng không gi?i h?n, b?o đ?m ng? ? kh? năng bán hàng ho?c cho m?t m?c đích c? th?. Bài vi?t này gi? đ?nh r?ng b?n đ? quen thu?c v?i ngôn ng? l?p tr?nh mà đang đư?c ch?ng minh và v?i nh?ng công c? đư?c s? d?ng đ? t?o ra và g? l?i th? t?c. Microsoft h? tr? các k? sư có th? giúp gi?i thích các ch?c năng c?a m?t th? t?c c? th?, nhưng h? s? không s?a đ?i các ví d? đ? cung c?p thêm ch?c năng ho?c xây d?ng quy tr?nh đ? đáp ?ng các yêu c?u c? th? c?a b?n. Có m?t chương tr?nh mà s? d?ng tách thi?t k? cơ s? d? li?u c?a nó b?ng trong m?t cơ s? d? li?u trong m?t v? trí m?ng chia s? (the back-end database), và t?t c? c?a nó truy v?n, bi?u m?u, báo cáo, macro và mô-đun trong cơ s? d? li?u khác trên m?i máy tính khách hàng (cơ s? d? li?u front-end). Nh?ng k?t n?i phía trư?c-end cơ s? d? li?u t?t c? các b?ng cơ s? d? li?u back-end. N?u cơ s? d? li?u back-end đư?c di chuy?n, l?i x?y ra trong chương tr?nh c?a b?n. B?n có th? cho phép chương tr?nh c?a b?n đ? phát hi?n r?ng các back-end cơ s? d? li?u t?p tin là m?t tích t? v? trí d? ki?n và sau đó nhanh chóng ngư?i s? d?ng cho v? trí m?i.

Ví d? sau cho th?y b?n làm th? nào đ? relink b?ng d? li?u trong chương tr?nh c?a b?n. Phương pháp này s? d?ng m?t h?nh th?c mà ngư?i dùng có th? m? relink back-end b?ng, và m?t tùy ch?n t?o thành mà có th? t? đ?ng ki?m ch?ng liên k?t tr? l?i-k?t thúc khi cơ s? d? li?u đư?c m? ra.

Bài vi?t này gi? đ?nh r?ng b?n có Microsoft H?p tho?i chung ki?m soát, trong đó có s?n v?i Microsoft Office 2000 Developer ?n b?n công c?. N?u b?n không có đi?u khi?n, b? qua các Browse() ch?c năng trong ví d?.

LƯU ?: N?u b?n s? d?ng các H?p tho?i chung ki?m soát và b?n có k? ho?ch đ? phân ph?i các chương tr?nh cơ s? d? li?u c?a b?n, b?n ph?i s? d?ng các gói và tri?n khai Wizard đ? bao g?m ki?m soát h?p tho?i chung Comdlg32.ocx, và t?p dll c?a nó h? tr? v?i các t?p tin thi?t l?p c?a b?n. Đ? bi?t thêm thông tin v? vi?c s? d?ng các gói và tri?n khai Wizard, xem các bài vi?t li?t kê trong ph?n "Tham kh?o" c?a bài vi?t này.

Phương pháp đ? Relink Back-End cơ s? d? li?u b?ng

TH?N TR?NG: N?u b?n làm theo các bư?c trong ví d? này, b?n s?a đ?i m?u cơ s? d? li?u Northwind.mdb. B?n có th? mu?n sao lưu các t?p tin Northwind.mdb và làm theo các bư?c trên m?t b?n sao c?a cơ s? d? li?u.

  1. T?o ra m?t m?i tr?ng truy c?p cơ s? d? li?u t?p tin và đ?t tên làFrontEnd.mdb.
  2. Trên các Tệp tr?nh đơn, đi?m đ?n Nh?n đư?c d? li?u bên ngoài, và sau đó nh?p vào Liên k?t b?ng.
  3. Duy?t đ? ch?n cơ s? d? li?u m?u Northwind.mdb, và sau đó b?m Liên k?t. Trong các Liên k?t b?ng h?p tho?i h?p, b?m vào Ch?n t?t c?, và sau đó nh?p vào Ok.
  4. T?o ra h?nh th?c m?i sau đây không d?a trên b?t k? bàn ho?c truy v?n trong thi?t k? giao di?n:
    H?nh th?c: frmNewDataFile

    H?p văn b?n:
    Tên: txtFileName
    Chi?u r?ng: 3 "
    H?p tho?i đi?u khi?n chung:
    Tên: xDialog
    Nút l?nh:
    Tên: cmdBrowse
    Chú thích: tr?nh duy?t...
    Vào b?m vào: =Browse()
    Nút l?nh:
    Tên: cmdLinkNew
    Chú thích: Làm m?i liên k?t
    Vào b?m vào: =Processtables()
    Nút l?nh:
    Tên: cmdCancel
    Chú thích: h?y b?
    OnClick: [S? ki?n th? t?c]
    H?y b?: có
  5. Trên các Xem tr?nh đơn, nh?p vào Mã.
  6. G? hay dán th? t?c sau đây:
    Private Sub cmdCancel_Click()
       On Error GoTo Err_cmdCancel_Click
     
       MsgBox "Link to new back-end cancelled", vbExclamation, "Cancel Refresh Link"
       DoCmd.Close acForm, Me.Name
    
    Exit_cmdCancel_Click:
       Exit Sub
    
    Err_cmdCancel_Click:
       MsgBox Err.Description
       Resume Exit_cmdCancel_Click
    
    End Sub
    					
  7. Trên các G? l?i tr?nh đơn, nh?p vào Biên d?ch l?i vào.
  8. Lưu bi?u m?u frmNewDataFile và đóng nó.
  9. Trong c?a s? cơ s? d? li?u, b?m Mô-đun, và sau đó nh?p vào M?i.
  10. Trên các Công cụ tr?nh đơn, nh?p vào Tham khảo, ch?n Microsoft DAO 3,6 đ?i tư?ng thư vi?n N?u nó không đ? đư?c ch?n, và sau đó nh?p vào Ok.
  11. G? hay dán đo?n m? sau:
    Dim UnProcessed As New Collection
           
    Public Function Browse()
        ' Prompts user for back-end database file name.
        On Error GoTo Err_Browse
        
        Dim strFilename As String
        Dim oDialog As Object
        Set oDialog = [Forms]![frmNewDatafile]!xDialog.Object
        
        With oDialog                    ' Ask for new file location.
            .DialogTitle = "Please Select New Data File"
            .Filter = "Access Database(*.mdb;*.mda;*.mde;*.mdw)|" & _
            "*.mdb; *.mda; *.mde; *.mdw|All(*.*)|*.*"
            .FilterIndex = 1
            .ShowOpen
            If Len(.FileName) > 0 Then  ' user responded, put selection into text box on form.
               [Forms]![frmNewDatafile]![txtFileName] = .FileName
            End If
        End With
    
    Exit_Browse:
        Exit Function
    
    Err_Browse:
        MsgBox Err.Description
        Resume Exit_Browse
    
    End Function
    
    Public Sub AppendTables()
    
        Dim db As DAO.Database, x As Variant
        Dim strTest As String
        ' Add names of all table with invalid links to the Unprocessed Collection.
        Set db = CurrentDb
        ClearAll
        For Each x In db.TableDefs
            If Len(x.Connect) > 1 And Len(Dir(Mid(x.Connect, 11))) = 0 Then
            ' connect string exists, but file does not
                 UnProcessed.Add Item:=x.Name, Key:=x.Name
            End If
        Next
    
    End Sub
    
    Public Function ProcessTables()
    
        Dim strTest As String
        On Error GoTo Err_BeginLink
        
        ' Call procedure to add all tables with broken links into a collection.
        AppendTables
        
        ' Test for existence of file name\directory selected in Common Dialog Control.
        strTest = Dir([Forms]![frmNewDatafile]![txtFileName])
        
        On Error GoTo Err_BeginLink
        If Len(strTest) = 0 Then   ' File not found.
            MsgBox "File not found. Please try again.", vbExclamation, "Link to new data file"
            Exit Function
        End If
        
        ' Begin relinking tables.
        Relinktables (strTest)
        ' Check to see if all tables have been relinked.
        CheckifComplete
        
        DoCmd.Echo True, "Done"
        If UnProcessed.Count < 1 Then
             MsgBox "Linking to new back-end data file was successful."
        Else
             MsgBox "Not All back-end tables were successfully relinked."
        End If
        DoCmd.Close acForm, [Forms]![frmNewDatafile].Name
        
    Exit_BeginLink:
        DoCmd.Echo True
        Exit Function
        
    Err_BeginLink:
        Debug.Print Err.Number
        If Err.Number = 457 Then
            ClearAll
            Resume Next
        End If
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_BeginLink
    
    End Function
    
    Public Sub ClearAll()
        Dim x
        ' Clear any and all names from the Unprocessed Collection.
        For Each x In UnProcessed
           UnProcessed.Remove (x)
        Next
    End Sub
    
    Public Function Relinktables(strFilename As String)
    
        Dim dbbackend As DAO.Database, dblocal As DAO.Database, ws As Workspace, x, y
        Dim tdlocal As DAO.TableDef
        
        On Error GoTo Err_Relink
        
        Set dbbackend = DBEngine(0).OpenDatabase(strFilename)
        Set dblocal = CurrentDb
        
        ' If the local linked table name is found in the back-end database
        ' we're looking at, Recreate & Refresh its connect string, and then
        ' remove its name from the Unprocessed collection.
         For Each x In UnProcessed
            If Len(dblocal.TableDefs(x).Connect) > 0 Then
                For Each y In dbbackend.TableDefs
                    If y.Name = x Then
                        Set tdlocal = dblocal.TableDefs(x)
                        tdlocal.Connect = ";DATABASE=" & _
                        Trim([Forms]![frmNewDatafile]![txtFileName])
                        tdlocal.RefreshLink
                        UnProcessed.Remove (x)
                    End If
                Next
            End If
        Next
    
    Exit_Relink:
        Exit Function
    
    Err_Relink:
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_Relink
    
    End Function
    
    Public Sub CheckifComplete()
    
        Dim strTest As String, y As String, notfound As String, x
        On Error GoTo Err_BeginLink
        
        ' If there are any names left in the unprocessed collection,
        ' then continue.
        If UnProcessed.Count > 0 Then
            For Each x In UnProcessed
                notfound = notfound & x & Chr(13)
            Next
            ' List the tables that have not yet been relinked.
            y = MsgBox("The following tables were not found in " & _
            Chr(13) & Chr(13) & [Forms]![frmNewDatafile]!txtFileName _
            & ":" & Chr(13) & Chr(13) & notfound & Chr(13) & _
            "Select another database that contains the additional tables?", _
            vbQuestion + vbYesNo, "Tables not found")
            
            If y = vbNo Then
                Exit Sub
            End If
            
            ' Bring the Common Dialog Control back up.
            Browse
            strTest = Dir([Forms]![frmNewDatafile]![txtFileName])
            If Len(strTest) = 0 Then   ' File not found.
                MsgBox "File not found. Please try again.", vbExclamation, _
                "Link to new data file"
                Exit Sub
           End If
           Debug.Print "Break"
           Relinktables (strTest)
        Else
           Exit Sub
        End If
        
        CheckifComplete
        
    Exit_BeginLink:
        DoCmd.Echo True   ' Just in case of error jump.
        DoCmd.Hourglass False
        Exit Sub
    
    Err_BeginLink:
        Debug.Print Err.Number
        If Err.Number = 457 Then
            ClearAll
            Resume Next
        End If
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_BeginLink
    
    End Sub
    					
  12. Trên các G? l?i tr?nh đơn, nh?p vào Biên d?ch l?i vào.
  13. Ti?t ki?m các mô-đun như RelinkCode, và sau đó đóng nó.
  14. Cơ s? d? li?u m?u Northwind.mdb đ?i tên ho?c di chuy?n nó đ?n m?t thư m?c trên đ?a c?ng c?a b?n đ? các b?ng đư?c liên k?t trong FrontEnd.mdb s? c?n đư?c làm m?i.
  15. M? d?ng frmNewDataFile, và sau đó b?m vào các Tr?nh duy?t nút.
  16. Trong các Vui l?ng ch?n t?p tin d? li?u m?i h?p tho?i h?p, xác đ?nh v? trí Northwind.mdb trong thư m?c m?i c?a nó, và sau đó nh?p vào M?.

    Lưu ? r?ng đư?ng d?n và tên t?p c?a cơ s? d? li?u xu?t hi?n trong h?p văn b?n vào h?nh th?c c?a b?n.
  17. B?m vào các Làm m?i liên k?t nút trên m?u.

    Lưu ? r?ng b?n nh?n đư?c các thông báo sau khi hoàn t?t các th? t?c:
    Liên k?t đ?n t?p tin d? li?u back-end m?i đ? thành công.

Vi?c t?o ra m?t h?nh th?c kh?i đ?ng đ? ki?m tra liên k?t b?ng

Đ? xác minh các liên k?t đ? tr? l?i-k?t thúc b?ng t? đ?ng m?i khi r?ng b?n m? cơ s? d? li?u FrontEnd.mdb, b?n có th? t?o ra m?t bi?u m?u ?n cho r?ng m?c đích b?ng cách làm theo các bư?c sau:
  1. T?o ra m?t h?nh th?c m?i không d?a trên b?t k? b?ng ho?c truy v?n trong thi?t k? xem.
  2. Trên các Xem tr?nh đơn, nh?p vào Mã.
  3. G? th? t?c sau đây đ? ch?y khi m? ra các h?nh th?c:
    Private Sub Form_Open(Cancel As Integer)
          ' Tests a linked table for valid back-end.
          On Error GoTo Err_Form_Open
          Dim strTest As String, db As DAO.Database
          Dim td As DAO.TableDef
          Set db = CurrentDb
          For Each td In db.TableDefs
             If Len(td.Connect) > 0 Then   ' Is a linked table.
                On Error Resume Next   ' Turn off error trap.
                strTest = Dir(Mid(td.Connect, 11))   ' Check file name.
                On Error GoTo Err_Form_Open   ' Turn on error trap.
                If Len(strTest) = 0 Then   ' No matching file.
                   If MsgBox("Couldn't find the back-end file " & _
                      Mid(td.Connect, 11) & ". Please choose new data file.", _
                      vbExclamation + vbOKCancel + vbDefaultButton1, _
                      "Can't find backend data file.") = vbOK Then
                         DoCmd.OpenForm "frmNewDataFile"   ' Open prompt form.
                         DoCmd.Close acForm, Me.Name
                         Exit Sub                          ' to refresh links
                   Else
                      MsgBox "The linked tables can't find their source. " & _
                      "Please log onto network and restart the application."
                   End If
                End If
             End If
          Next   ' Loop to next tabledef.
          DoCmd.Close acForm, Me.Name
    Exit_Form_Open:
          Exit Sub
    Err_Form_Open:
          MsgBox Err.Number & ": " & Error.Description
          Resume Exit_Form_Open
          End Sub
    					
  4. Trên các G? l?i tr?nh đơn, nh?p vào Biên d?ch l?i vào.
  5. Lưu các h?nh th?c như frmCheckLink, và sau đó đóng nó.
  6. Thi?t l?p frmCheckLink là h?nh th?c kh?i đ?ng, trên các Công cụ Nh?p vào tr?nh đơn Kh?i đ?ng, ch?n frmCheckLink trong các Hi?n th? d?ng/trang danh sách và b?m Ok.
  7. Đ? làm cho frmCheckLink m?t bi?u m?u ?n, b?m chu?t ph?i vào frmCheckLink trong c?a s? cơ s? d? li?u, b?m Thu?c tính trên tr?nh đơn phím t?t, nh?n vào đây đ? ch?n các ?n ki?m tra h?p trong các frmCheckLink thu?c tính h?p tho?i, và sau đó b?m Ok.
  8. Di chuy?n cơ s? d? li?u m?u Northwind.mdb t?i m?t c?p khác trên đ?a c?ng c?a b?n đ? cho các b?ng đư?c liên k?t trong FrontEnd.mdb s? c?n ph?i làm m?i.
  9. Đóng và sau đó m? l?i FrontEnd.mdb.

    Nh?n th?y r?ng b?n nh?n đư?c thông báo l?i sau
    Không th? t?m th?y các back-end t?p cơ s? d? li?u t?p tin. H?y ch?n d? li?u m?i t?p tin.
    nơi cơ s? d? li?u t?p tin là con đư?ng và tên t?p tin c?a cơ s? d? li?u back-end.

    N?u b?n nh?p vào Ok, các h?nh th?c frmNewDataFile s? m? ra cho b?n đ? ch?n m?t back-end m?i cơ s? d? li?u, và sau đó làm m?i liên k?t b?ng c?a b?n. N?u b?n nh?p vào H?y b?, b?n nh?n đư?c thông báo l?i sau:
    Các b?ng đư?c n?i k?t không th? t?m th?y ngu?n g?c c?a h?. Xin vui l?ng đăng nh?p vào m?ng và kh?i đ?ng l?i chương tr?nh.

THAM KH?O

Đ? có thêm thông tin v? tùy bi?n các Ví d? đ? làm m?i đư?c liên k?t b?ng trong chương tr?nh m?u nhà phát tri?n gi?i pháp (Solutions9.mdb), b?m vào s? bài vi?t dư?i đây đ? xem các bài vi?t trong các Cơ s? ki?n th?c Microsoft:
154397 ADT/ODE làm th? nào đ? s?a đ?i các mô-đun RefreshTableLinks trong Solutions.mdb
Cho thêm thông tin v? các gói và tri?n khai thu?t s?, b?m s? bài vi?t dư?i đây đ? xem các bài vi?t trong cơ s? ki?n th?c Microsoft:
240956 MOD2000: Gói và tri?n khai Wizard bây gi? đư?c s? d?ng đ? t?o ra m?t ?ng d?ng th? chia
236143 MOD2000: Làm th? nào đ? b?t đ?u các gói và tri?n khai Wizard

Thu?c tính

ID c?a bài: 209862 - L?n xem xét sau cùng: 17 Tháng Chín 2011 - Xem xét l?i: 3.0
Áp d?ng
  • Microsoft Access 2000 Standard Edition
T? khóa: 
kbprogramming kberrmsg kbhowto kbinfo kbmt KB209862 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:209862

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com