Access 2000에서 공용 대화 컨트롤 사용하여 백 엔드 테이블에 다시 연결 방법

기술 자료 번역 기술 자료 번역
기술 자료: 209862 - 이 문서가 적용되는 제품 보기.
이 문서에서는 Microsoft Access 97 버전에 181076 참조하십시오.
고급: 전문적인 코드 작성, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서에서는 경우에만 Access 데이터베이스를 수 (.mdb) 적용됩니다.

모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 공용 대화 상자 컨트롤을 사용하여 데이터베이스의 연결된 테이블을 새로 고치는 방법을 보여 줍니다. 공용 대화 상자 컨트롤 Microsoft Office 2000 Developer 버전 도구를 사용할 수 있습니다. 연결 중인 테이블 한 개 이상의 백 엔드 데이터베이스에 있을 수 있습니다.

개발자 솔루션 샘플 프로그램 (Solutions9.mdb) Microsoft Windows 응용 프로그램 프로그래밍 인터페이스 (API) 함수를 사용하는 테이블을 다시 링크할 다른 방법을 예를 참조하십시오. Solutions9.mdb 구하려면 아래 문서 번호를 눌러 Microsoft 기술 자료에 있는 문서를 클릭하십시오.
248674ACC2000: Orders 및 개발자 솔루션 예제 데이터베이스 (MSDN) Microsoft 개발자 네트워크에서 사용
Solutions9.mdb 데이터베이스를 열고 여러 데이터베이스 사용중 범주 예 상자에서 선택한 다음 예제 선택 상자에서 시작할 때 연결 테이블 을 클릭하십시오.

추가 정보

Microsoft는 묵시적인 보증 없이 목적으로만 프로그래밍 예제를 제공합니다. 이 포함되지만, 상품성 또는 특정 목적에의 적합성에 대한 묵시적인된 보증이 제한되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다. 분할 데이터베이스 디자인 사용하는 프로그램을 공유 네트워크 위치에 (백 엔드 데이터베이스), 한 데이터베이스 및 쿼리, 폼, 보고서, 매크로 및 모듈을 다른 데이터베이스에 프런트 엔드 데이터베이스 각 클라이언트 컴퓨터에서 모두 해당 테이블이 있습니다. 프런트 엔드 데이터베이스에 해당 테이블의 모든 백 엔드 데이터베이스에 연결합니다. 백 엔드 데이터베이스를 이동할 경우 프로그램에서 오류가 발생합니다. 백 엔드 데이터베이스 파일이 예상된 위치에 없습니다 검색하고 다음 새 위치를 묻는 프로그램을 사용할 수 있습니다.

다음은 프로그램에서 테이블 데이터를 다시 연결 방법을 보여 줍니다. 이 메서드는 사용자가 백 엔드 테이블에 다시 열 수 있는 폼과 데이터베이스가 열릴 때 자동으로 백 엔드 링크를 확인할 수 있는 다른 선택적 폼 사용합니다.

이 문서에서는 Microsoft Office 2000 Developer 버전 도구를 사용할 수 있는 Microsoft 공용 대화 상자 컨트롤에 있는 것으로 가정합니다. 이 컨트롤이 있는 경우 예제에서는 Browse() 함수를 건너뜁니다.

참고: 공용 대화 상자 컨트롤을 사용하면 데이터베이스 프로그램이 배포하려는 경우 패키지 및 배포 마법사를 공용 대화 상자 컨트롤 포함하도록 사용해야 파일, Comdlg32.ocx, 및 해당 지원 DLL 설치 파일. 패키지 및 배포 마법사를 사용하는 방법에 대한 자세한 내용은 이 문서의 "참조" 절에 나열된 문서를 참고하십시오.

백 엔드 데이터베이스 테이블 다시 연결 방법

주의: 이 예제의 단계를 경우 Northwind.mdb 예제 데이터베이스를 수정합니다. Northwind.mdb 파일을 백업하려면 다음과 같이 데이터베이스의 복사본을 할 수 있습니다.

  1. 새 빈 Access 데이터베이스 파일을 만들고 FrontEnd.mdb 이름을 지정하십시오.
  2. 파일 메뉴에서 외부 데이터 가져오기 가리킨 다음 테이블 연결을 클릭하십시오.
  3. Northwind.mdb 예제 데이터베이스를 찾은 다음 연결 을 클릭하십시오. 테이블 연결 대화 상자에서 모두 선택 을 클릭한 다음 확인 을 클릭하십시오.
  4. 모든 테이블 또는 디자인 보기에서 쿼리를 기반으로 다음 새 양식을 만듭니다.
    양식: frmNewDataFile

    텍스트 상자:
    이름: txtFileName
    너비: 3 "
    공용 대화 상자 컨트롤:
    이름: xDialog
    명령 단추:
    이름: cmdBrowse
    캡션: 찾아보기...
    Click 따라: =Browse()
    명령 단추:
    이름: cmdLinkNew
    캡션: Refresh 링크
    Click 따라: =Processtables()
    명령 단추:
    이름: cmdCancel
    캡션: 취소
    OnClick: [이벤트 프로시저]
    취소: 예
  5. 보기 메뉴에서 코드 를 클릭하십시오.
  6. 입력하거나 다음 프로시저를 붙여:
    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. 디버그 메뉴에서 컴파일 FrontEnd 를 클릭하십시오.
  8. frmNewDataFile 폼을 저장하고 닫습니다.
  9. 데이터베이스 창에서 모듈 을 누른 다음 새로 만들기 를 클릭하십시오.
  10. 도구 메뉴에서 참조 를 이미 선택되어 있으면 Microsoft DAO 3.6 개체 라이브러리에 선택한 다음 확인 을 클릭하십시오.
  11. 다음 코드를 입력하거나 붙여:
    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. 디버그 메뉴에서 컴파일 FrontEnd 를 클릭하십시오.
  13. RelinkCode 같이 모듈을 저장하고 닫습니다.
  14. Northwind.mdb 예제 데이터베이스의 이름을 바꾸거나 FrontEnd.mdb 연결된 테이블에서 새로 고쳐야 할 수 있도록 하드 디스크의 다른 폴더로 이동하십시오.
  15. frmNewDataFile 양식을 열고 찾아보기 단추를 클릭하십시오.
  16. 수신자 새 데이터 파일 선택 대화 상자에서 Northwind.mdb 해당 새 폴더를 찾은 다음 열기 를 클릭하십시오.

    참고 데이터베이스의 경로와 파일 이름을 양식의 텍스트 상자에 나타납니다.
  17. 폼의 연결 새로 고침 단추를 클릭하십시오.

    프로시저가 끝날 때 다음 메시지가 나타날 수 있음을 유의하십시오.
    새 백 엔드 데이터 파일에 연결하는 성공했습니다.

연결된 테이블의 확인하려면 시작 폼 만들기

FrontEnd.mdb 데이터베이스를 열 때마다 자동으로 백 엔드 테이블에 대한 연결을 확인하려면 다음 이 단계를 수행하여 목적으로 숨겨진된 폼을 만들 수 있습니다.
  1. 테이블 또는 쿼리 디자인 기초로 새 양식을 만들 보기.
  2. 보기 메뉴에서 코드 를 클릭하십시오.
  3. 양식을 열 때 실행한 다음 프로시저를 입력합니다:
    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. 디버그 메뉴에서 컴파일 FrontEnd 를 클릭하십시오.
  5. frmCheckLink 같이 폼을 저장하고 닫습니다.
  6. 시작 폼에 도구 frmCheckLink 설정하려면 메뉴 모드frmCheckLink폼/페이지 표시 목록에서 선택하고 확인 을 누릅니다.
  7. frmCheckLink 숨겨진된 폼을 만들려면 데이터베이스 창에서 frmCheckLink 마우스 오른쪽 단추로 클릭하고, 바로 가기 메뉴에서 속성 을 클릭합니다. 그리고 frmCheckLink 속성 대화 상자에서 숨김 확인란을 선택합니다 및 다음 확인 을 누릅니다.
  8. Northwind.mdb 예제 데이터베이스의 하드 디스크의 다른 폴더로 이동하여 FrontEnd.mdb 연결된 테이블을 새로 고쳐야 합니다.
  9. FrontEnd.mdb 닫았다가 다시 엽니다.

    다음과 같은 오류 메시지가 나타납니다
    백 엔드 파일 database file 을 찾을 수 없습니다. 새 데이터 파일을 선택하십시오.
    백 엔드 데이터베이스의 경로와 파일 이름을 database file 위치.

    확인 을 누르면 frmNewDataFile 양식의 새 백 엔드 데이터베이스를 선택할 수 열리고 테이블 링크를 새로 고칩니다. 취소 를 누르면 다음 오류 메시지가 나타납니다.
    연결된 테이블 원본을 찾을 수 없습니다. 네트워크에 로그온하여 프로그램을 다시 시작하십시오.

참조

이 예제에서는 솔루션 개발자 예제 연결된 테이블을 새로 고치는 사용자 지정에 대한 자세한 내용은 (Solutions9.mdb) 프로그램의 경우 아래 문서 번호를 눌러 Microsoft 기술 자료에 있는 문서를 클릭하십시오.
154397ODE/ADT Solutions.mdb RefreshTableLinks 모듈에서 수정 방법
패키지 및 배포 마법사에 대한 자세한 내용은 Microsoft 기술 자료 문서를 보려면 해당 자료의 문서를 참조하십시오.
240956MOD2000: 패키지 및 배포 마법사를 지금 사용되는 배포 가능 응용 프로그램 만들기
236143MOD2000: 패키지 및 배포 마법사 시작 방법

속성

기술 자료: 209862 - 마지막 검토: 2005년 6월 23일 목요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Access 2000 Standard Edition
키워드:?
kbmt kbprogramming kberrmsg kbhowto kbinfo KB209862 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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