Как связать таблицы серверной общий элемент управления диалогового окна в Microsoft Access 2000

Переводы статьи Переводы статьи
Код статьи: 209862 - Vizualiza?i produsele pentru care se aplic? acest articol.
Версия для a Microsoft Access 97 в данной статье содержатся в разделе181076.
Дополнительно: требуется изложенный, взаимодействия и многопользовательской навыков

В данной статье, применимо только к базе данных Microsoft Access (.mdb).

Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье показано, как использоватьОбщие диалогового окнаэлемент управления обновление связанных таблиц в базе данных. Общие диалогового окнаэлемент управления входит в состав средства Microsoft Office 2000 Developer Edition. Таблицы связанные могут располагаться один или несколько баз данных сервера.

Пример метода, чтобы связать таблицы, использующий функции API-интерфейса программирования приложений Microsoft Windows, обратитесь к решениям разработчиков образец программы (Solutions9.mdb). Чтобы получить Solutions9.mdb, щелкните следующий номер статьи базы знаний Майкрософт:
248674ACC2000: заказы и решения для разработчиков образцы баз данных В сети разработчиков Майкрософт (MSDN)
Откройте базу данных Solutions9.mdb, выберитеИспользование нескольких баз данныхвВыберите категорию примерыв поле и нажмите кнопкуСвязать таблицы при загрузкевВыберите примерполе.

Дополнительная информация

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и или подразумеваемых. Включая, но не ограничивая, подразумеваемые гарантии товарности или пригодности для использования в определенных целях.. В данной статье предполагается, что вы знакомы с языком программирования предложенном в примере, а также с средствами, которые используются для создания и отладки.. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры, но не выполнять модификации примеров для обеспечения функциональных возможностей или создания процедур соответствующих определенным требованиям.. A программа, использующая разделение базы данных имеет таблицы в одну базу данных в общем сетевом ресурсе (серверную базу данных), а все запросы, формы, отчеты, макросы и модули в другой базе данных на каждом клиентском компьютере (клиентской базы данных). Клиентская база данных связывает все таблицы серверной базы данных. При перемещении серверную базу данных ошибок в программе. Можно включить программу так, чтобы определить, отсутствует, файл серверную базу данных из ожидаемого места и затем приглашение ввести новое место.

Ниже примере показано, как связать данные таблицы в программе. Этот метод использует форму, пользователь может открыть, чтобы связать таблицы серверной и другой дополнительные формы, может автоматически проверить связи фонового сервера при открытии базы данных.

В данной статье предполагается, что MicrosoftОбщие диалогового окнаэлемент управления , который входит в состав средства Microsoft Office 2000 Developer Edition. Если этот элемент управления, пропуститеBrowse()функции, в примере.

Примечание: При использованииОбщие диалогового окнауправления и планируете распространять базы данных программы, необходимо использовать пакет и мастера развертывания для включения типового элемента управления диалогового окна файла Comdlg32.ocx и его вспомогательные библиотеки DLL с файлами установки. Для получения дополнительных сведений об использовании пакета и мастера развертывания содержатся в разделе статьи, перечисленные в разделе «Ссылки» данной статьи.

Метод, чтобы связать фонового таблицы базы данных

Предупреждение: Выполните действия, описанные в данном примере, изменению образца базы данных Northwind.mdb. Необходимо создать резервную копию файла Northwind.mdb и выполните следующие действия на копию базы данных.

  1. Создайте новый файл базы данных Microsoft Access с именемFrontEnd.mdb.
  2. НаФайлвыберите пункт менюПолучить внешние данные, а затем нажмите кнопкуСвязи таблиц.
  3. Выберите образец базы данных Northwind.mdb и нажмите кнопкуСсылка. ВСвязи таблицдиалоговое окно, нажмите кнопкуВыберите «все», а затем нажмите кнопкуОК.
  4. Создайте следующую новую форму, не на основе любой таблицы или запроса в режиме конструктора:
    Формы: frmNewDataFile

    Текстового поля:
    Имя: txtFileName
    Ширина: 3 "
    Общего диалогового окна элемента управления:
    Имя: xDialog
    Кнопки:
    Имя: cmdBrowse
    Заголовок: Обзор...
    На щелчок: =Browse()
    Кнопки:
    Имя: cmdLinkNew
    Заголовок: обновить связи
    На щелчок: =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

    Обратите внимание на то, что появляется следующее сообщение об ошибке
    Не удается найти файл фонового серверафайл базы данных. Выберите новый файл данных.
    гдефайл базы данных— путь к файлу и имя серверной базы данных.

    Если нажать кнопкуОК, frmNewDataFile форма открывается для выбора серверную базу данных, а затем обновляет ссылки на таблицы. Если нажать кнопкуОтмена, появляется следующее сообщение об ошибке:
    Связанные таблицы не может найти их источника. Войдите в сеть и перезапустить программу.

Ссылки

Для получения дополнительных сведений о настройке пример обновления связанной таблицы в образце решения для разработчиков программ (Solutions9.mdb), щелкните следующий номер статьи базы знаний Майкрософт:
154397ADT/ODE как изменение модуля RefreshTableLinks в Solutions.mdb
Для получения дополнительных сведений о пакета и мастера развертывания, щелкните следующий номер статьи базы знаний Майкрософт:
240956MOD2000: пакет и мастера развертывания, сейчас используется для создания приложения распространяемых
236143MOD2000: запуск пакета и мастера развертывания

Свойства

Код статьи: 209862 - Последний отзыв: 17 сентября 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Access 2000 Standard Edition
Ключевые слова: 
kbprogramming kberrmsg kbhowto kbinfo kbmt KB209862 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:209862

Отправить отзыв

 

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