Пример кода для импорта всех объектов базы данных в Access

Переводы статьи Переводы статьи
Код статьи: 298174 - Vizualiza?i produsele pentru care se aplic? acest articol.
Средний: Требуется базовый макрос, кодирования и навыки взаимодействия.

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

ПРИМЕЧАНИЕ: Образец кода в этой статье использует объекты доступа К данным Microsoft. Для правильного выполнения этого кода необходимо ссылаться на библиотеку объектов Microsoft DAO 3.6. Для этого нажмите кнопку Ссылки В меню Сервис меню в редакторе Visual Basic и убедитесь, что Библиотека объектов Microsoft DAO 3.6 флажок.

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

Аннотация

Статья описывает, как использовать объекты доступа К данным (DAO) для импорта всех объектов из одной базы данных Microsoft Access в текущей базе данных. В некоторых случаях этот код можно использовать для восстановления поврежденной базы данных, могут быть открыты, но не могут сжиматься успешно объектов базы данных. Этот код не импортируются следующие элементы:
  • Ссылки
  • Спецификации импорта и экспорта
  • Сведения о безопасности (разрешения пользователей и групп)
Текущий пользователь (обычно администратор) становится владельцем всех импортируемых объектов.

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

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

Сертифицированных партнеров Майкрософт: https://partner.microsoft.com/rus/partner?countrycode=ru-ru

Служба Майкрософт- http://support.Microsoft.com/gp/advisoryservice

Для получения дополнительных сведений о вариантах поддержки, доступных и обратитесь в корпорацию Майкрософт посетите следующий веб-узел корпорации Майкрософт:http://support.Microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSЧтобы импортировать все объекты из другой базы данных в текущей базе данных, выполните следующие действия:
  1. Запустите приложение Access, а затем откройте базу данных, где требуется импортировать объекты.

    Это может быть новая пустая база данных.
  2. В окне базы данных нажмите кнопку Модули, а затем нажмите кнопку Новый.
  3. На Сервис меню, нажмите кнопку Ссылки. Убедитесь, что Библиотека объектов Microsoft DAO 3.6 позже в или в список ссылок. Убедитесь также, что любая ссылка на Microsoft ActiveX Data Objects не установлен. Нажмите кнопку ОК.
  4. Введите или вставьте следующий код в окно модуля.
    Option Compare Database
    
    Option Explicit
    
    Public Function ImportDb(strPath As String) As Boolean
    
    On Error Resume Next
    
    Dim db As Database 'Database to import
    Dim td As TableDef 'Tabledefs in db
    Dim strTDef As String 'Name of table or query to import
    Dim qd As QueryDef 'Querydefs in db
    Dim doc As Document 'Documents in db
    Dim strCntName As String 'Document container name
    Dim x As Integer 'For looping
    Dim cntContainer As Container 'Containers in db
    Dim strDocName As String 'Name of document
    Dim intConst As Integer
    Dim cdb As Database 'Current Database
    Dim rel As Relation 'Relation to copy
    Dim nrel As Relation 'Relation to create
    Dim strRName As String 'Copied relation's name
    Dim strTName As String 'Relation Table name
    Dim strFTName As String 'Relation Foreign Table name
    Dim varAtt As Variant 'Attributes of relation
    Dim fld As Field 'Field(s) in relation to copy
    Dim strFName As String 'Name of field to append
    Dim strFFName As String 'Foreign name of field to append
    
    'Open database which contains objects to import.
    
    Set db = DBEngine.Workspaces(0).OpenDatabase(strPath, True)
    
    
    'Import tables from specified Access database.
    
    For Each td In db.TableDefs
    
    strTDef = td.Name
    
    If Left(strTDef, 4) <> "MSys" Then
    
    DoCmd.TransferDatabase acImport, "Microsoft Access", strPath, acTable, _
    strTDef, strTDef, False
    
    End If
    
    Next
    
    
    'Import queries.
    
    For Each qd In db.QueryDefs
    
    strTDef = qd.Name
    
    DoCmd.TransferDatabase acImport, "Microsoft Access", strPath, acQuery, _
    strTDef, strTDef, False
    
    Next
    
    
    'Copy relationships to current database.
    
    Set cdb = CurrentDb
    
    For Each rel In db.Relations
    
    With rel
    
    'Get properties of relation to copy.
    
    strRName = .Name
    strTName = .Table
    strFTName = .ForeignTable
    varAtt = .Attributes
    
    'Create relation in current db with same properties.
    
    Set nrel = cdb.CreateRelation(strRName, strTName, strFTName, varAtt)
    
    For Each fld In .Fields
    
    strFName = fld.Name
    strFFName = fld.ForeignName
    nrel.Fields.Append nrel.CreateField(strFName)
    nrel.Fields(strFName).ForeignName = strFFName
    
    Next
    
    cdb.Relations.Append nrel
    
    End With
    
    Next
    
    
    'Loop through containers and import all documents.
    
    For x = 1 To 4
    
    Select Case x
    
    Case 1
    strCntName = "Forms"
    intConst = acForm
    
    Case 2
    strCntName = "Reports"
    intConst = acReport
    
    Case 3
    strCntName = "Scripts"
    intConst = acMacro
    
    Case 4
    strCntName = "Modules"
    intConst = acModule
    
    End Select
    
    Set cntContainer = db.Containers(strCntName)
    
    For Each doc In cntContainer.Documents
    
    strDocName = doc.Name
    
    DoCmd.TransferDatabase acImport, "Microsoft Access", strPath, intConst, _
    strDocName, strDocName
    
    'Debug.Print strDocName
    'for debugging, will list document names in debug window.
    
    Next doc
    Next x
    
    'Clean up variables to recover memory.
    
    Set fld = Nothing
    Set nrel = Nothing
    Set rel = Nothing
    Set cdb = Nothing
    Set td = Nothing
    Set qd = Nothing
    Set cntContainer = Nothing
    
    db.Close
    Set db = Nothing
    
    ImportDb = True
    
    End Function
    					
  5. На Представление меню, нажмите кнопку Окно "Интерпретация".
  6. В окне интерпретации введите следующую команду и нажмите клавишу ВВОД:
    ?ImportDb ("C:\путь к файлу\MySourceDatabase.mdb)"
    Примечание Подставьте правильный путь и имя файла для базы данных-источника. Этот код возвращает «True» (или -1) в случае успешного выполнения.

Свойства

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

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

 

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