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

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
Bài viết này đã được lưu trữ. Bài viết được cung cấp "nguyên trạng" và sẽ không còn được cập nhật nữa.
Đố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).

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.NameExit_cmdCancel_Click:   Exit SubErr_cmdCancel_Click:   MsgBox Err.Description   Resume Exit_cmdCancel_ClickEnd 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 WithExit_Browse:    Exit FunctionErr_Browse:    MsgBox Err.Description    Resume Exit_BrowseEnd FunctionPublic 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    NextEnd SubPublic 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_BeginLinkEnd FunctionPublic Sub ClearAll()    Dim x    ' Clear any and all names from the Unprocessed Collection.    For Each x In UnProcessed       UnProcessed.Remove (x)    NextEnd SubPublic 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    NextExit_Relink:    Exit FunctionErr_Relink:    MsgBox Err.Number & ": " & Err.Description    Resume Exit_RelinkEnd FunctionPublic 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 SubErr_BeginLink:    Debug.Print Err.Number    If Err.Number = 457 Then        ClearAll        Resume Next    End If    MsgBox Err.Number & ": " & Err.Description    Resume Exit_BeginLinkEnd 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.NameExit_Form_Open:      Exit SubErr_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
INF relink reattach kết nối lại liên kết làm mới đính kèm kết nối ADT ODE

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 209862 - Xem lại Lần cuối: 12/05/2015 11:13:40 - Bản sửa đổi: 3.0

Microsoft Access 2000 Standard Edition

  • kbnosurvey kbarchive kbprogramming kberrmsg kbhowto kbinfo kbmt KB209862 KbMtvi
Phản hồi