none
Вопрос по Access - объединение баз RRS feed

  • Вопрос

  • Добрый день, господа.

     

    Сразу оговорюсь, что с Аксесом не работал никогда, но явного решения моего вопроса не нашел ни в справке ни в гугле.

     

    Итак ситуация, есть 2 базы данных, изначально это была одна и та же база, то есть название и количество полей в ней совпадают, далее эти базы вели 2 разных человека и данные в них тоже разные. Теперь возникла необходимость, объединить 2 базы в 1 общую (содержащую все данные обоих баз). Честно говоря вот здесь и споткнулся - непонял как это сделать. Может посоветуете что-нибудь.

     

    Заранее спасибо за ответ и внимание

    4 декабря 2007 г. 20:13

Ответы

  • Если никогда не работали - тяжело ...

     

    1. Прямой функции объединения БД в Access - нет.

     

    2. Общий порядок следующий:

    2.1 Открываем БД-1 и подключаем к ней все таблицы из БД-2.

     

    2.2 Для каждой пары таблиц создаем Запрос на добавление полей БД-2.Таблица.Х в БД-1.Таблица.Х. Можно и наоборот.

     

    2.3 При этом, если ключевых полей - нет, то можно просто добавить ВСЕ поля.

     

    2.4 Если ключевые поля присутствуют и "Совпадения не допускаются", то

     

    2.4.1 Необходимо предварительно выявить наличие совпадающих ключевых полей, сформировать два запроса

     

    2.4.1.1 Один должен выводить поля БД-2.Таблица.Х с ключевыми полями отсутствующими в БД-1.Таблица.Х, его результаты можно добавить в БД-1.Таблица.Х аналогично п.2.2.

     

    2.4.1.2 Другой должен выводить поля БД-2.Таблица.Х с ключевыми полями присутствующими в БД-1.Таблица.Х, его результаты необходимо использовать при создании запроса на внесение изменений в существующие поля БД-1. Естественно, что необходимость таких изменений должна быть предварительно проанализирована.

     

    2.5 Если ключевые поля присутствуют но являются полями типа "Счетчик", которые заполняются автоматически, то перед добавлением и изменением новых записей необходимо будет создать дополнительное поле типа "Число", запомнить в нем значение счетчика, а потом поменять соответствующие поля во всех связанных таблицах. При добавлении полей, поле типа "Счетчик" не добавлять - оно будет посчитано само.

     

    2.5.1 Есть вариант поменять поля типа "Счетчик" на "Число", но при этом вы теряете возможность последующего автоматического формирования индекса.

     

    В общем, в зависимости от размера БД: количества таблиц и наличия связей - начать ... и кончить.

     

    Удачи. Будут конкретные проблемы - стучитесь в WinMessenger.

    5 декабря 2007 г. 18:56

Все ответы

  • Если никогда не работали - тяжело ...

     

    1. Прямой функции объединения БД в Access - нет.

     

    2. Общий порядок следующий:

    2.1 Открываем БД-1 и подключаем к ней все таблицы из БД-2.

     

    2.2 Для каждой пары таблиц создаем Запрос на добавление полей БД-2.Таблица.Х в БД-1.Таблица.Х. Можно и наоборот.

     

    2.3 При этом, если ключевых полей - нет, то можно просто добавить ВСЕ поля.

     

    2.4 Если ключевые поля присутствуют и "Совпадения не допускаются", то

     

    2.4.1 Необходимо предварительно выявить наличие совпадающих ключевых полей, сформировать два запроса

     

    2.4.1.1 Один должен выводить поля БД-2.Таблица.Х с ключевыми полями отсутствующими в БД-1.Таблица.Х, его результаты можно добавить в БД-1.Таблица.Х аналогично п.2.2.

     

    2.4.1.2 Другой должен выводить поля БД-2.Таблица.Х с ключевыми полями присутствующими в БД-1.Таблица.Х, его результаты необходимо использовать при создании запроса на внесение изменений в существующие поля БД-1. Естественно, что необходимость таких изменений должна быть предварительно проанализирована.

     

    2.5 Если ключевые поля присутствуют но являются полями типа "Счетчик", которые заполняются автоматически, то перед добавлением и изменением новых записей необходимо будет создать дополнительное поле типа "Число", запомнить в нем значение счетчика, а потом поменять соответствующие поля во всех связанных таблицах. При добавлении полей, поле типа "Счетчик" не добавлять - оно будет посчитано само.

     

    2.5.1 Есть вариант поменять поля типа "Счетчик" на "Число", но при этом вы теряете возможность последующего автоматического формирования индекса.

     

    В общем, в зависимости от размера БД: количества таблиц и наличия связей - начать ... и кончить.

     

    Удачи. Будут конкретные проблемы - стучитесь в WinMessenger.

    5 декабря 2007 г. 18:56
  • Есть такая возможность.

     

    Называется "запрос на объединениее" - UNION

     

    Для этого необходимо в любую из двух баз данных (тем более, что коллега написал, что они имеют одинаковую стуктуру, а это есть главный фактор) импортируем (связываем) таблицы из другой базы. Затем создаем запрос ()запросы на объединение.

     

    TableName_1

    UNION

    TableName_2

     

    может быть придется  воспользоваться следущим - Объединение результатов нескольких запросов на выборку с использованием запроса на объединение, если в БД есть несколько связанных таблиц.

     

    А вообще в справке (особенно в 2007) все очень хорошо и детально описано.

    6 декабря 2007 г. 10:20
  •  MaximMalko написано:

    Есть такая возможность.

     

    Называется "запрос на объединениее" - UNION

     

    Для этого необходимо в любую из двух баз данных (тем более, что коллега написал, что они имеют одинаковую стуктуру, а это есть главный фактор) импортируем (связываем) таблицы из другой базы. Затем создаем запрос ()запросы на объединение.

     

    TableName_1

    UNION

    TableName_2

     

    может быть придется  воспользоваться следущим - Объединение результатов нескольких запросов на выборку с использованием запроса на объединение, если в БД есть несколько связанных таблиц.

     

    А вообще в справке (особенно в 2007) все очень хорошо и детально описано.

     

    Максим, в исходном вопросе речь идет о БАЗАХ, а не о ТАБЛИЦАХ. Может быть автор и ошибся и в его БД одна единственная таблица. А, если их не много, то они связаны не сложным образом. Но, лично я (ИМХО) подобным образом "объединять" через UNION БД, не представляя их схем, не рискнул бы. Слишком много может возникнуть нюянсов, связанных со структурой и внутренними связями.

     

    Операция Union предназначена для объединения результатов запросов, а не СТРУКТУР БД, состоящих из взаимосвязанных таблиц.

     

     

    6 декабря 2007 г. 15:44
  • Простите за молчание, отвлекся.

    Да речь идет именно о базах с довольно сложной структурой. Писал не я - но разницу видно.

    Скорее всего придется действовать по первому способу. В связи с чем, не постесняюсь воспользоваться позволением автора стучаться в мессенджер.

    Странно, что не предусмотрена встроенная возможность таких действий.

    Спасибо за ответы

    6 декабря 2007 г. 18:42
  • Каюсь. Недопонял прочитанное. Действительно, придется прибегнуть к способу №1.

    7 декабря 2007 г. 11:09