Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 490
от 19.03.2007, 18:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 243, Экспертов: 31
В номере:Вопросов: 1, Ответов: 2


Вопрос № 78247: Здравствуйте, уважаемые эксперты. У меня такой вопрос: есть несколко баз данных MS Access, одна из которых основная. Все они содержат таблицы в которых накапливается информация. Мне нужно сделать запрос из центральной БД ко вторичным, который бы прос...

Вопрос № 78.247
Здравствуйте, уважаемые эксперты. У меня такой вопрос: есть несколко баз данных MS Access, одна из которых основная. Все они содержат таблицы в которых накапливается информация. Мне нужно сделать запрос из центральной БД ко вторичным, который бы просматривал внесенные в них изменения и обновлял данные в центральной таблице.
Проблема в том, что я не знаю с чего начать.
З.Ы. Репликация не подходит, так как предусматривается перемещение центральной базы из одной папки в другую или на другой компьютер.
Отправлен: 14.03.2007, 13:45
Вопрос задал: Bahus (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Bahus!
Лучше всего написать какой-либо обработчик изменения данных. Это может быть программа на VB или модуль в основной базе.
Самый простой вариант, если все базы расположены в определенных каталогах, даже на разных компьютерах, и пути к базам известны и не меняются. Тогда возможны несколько вариантов :
1. Установить связь с каждой таблицей всех баз, из которых данные будут обновляться. Физически данные будут также храниться на других компьютерах, но Access сам будет к ним подключаться и работать так же, как и с обычными таблицами в основной базе. Недостаток - если в каждой базе есть таблица BASE, то будет несколько таблиц : BASE1 - из первой клиентской базы, BASE2 - из второй клиентской базы и т.п. В обработчике необходимо перечислить все возможные варианты.
2. В запросе явно указывать на таблицу, находящуюся на другом компьютере, например :
select * from kart IN '\указать путь к базе на другом компьютере или в другом каталогеPred.mdb' where kod=4
Недостатки те же - для каждой таблицы необходимо указывать точный путь к базе.

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

Можно написать программу импорта-экспорта внесенных изменений - в дополнительных базах ведется журнал изменений ( экспортируется потом в текстовый файл ) , который передается в основную базу и в ней эти изменения повторяются - в таком виде у нас ведется обмен данными между базами филиалов и управления - 480000 записей в SQL Server.

С уважением.
Ответ отправил: Филатов Евгений Геннадьевич (статус: 6-ой класс)
Ответ отправлен: 14.03.2007, 16:19

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Bahus!
Я рекомендую Вам, если конечно речь идет о работе в сети, не создавать себе проблему и не пытаться идти по пути "обреченной архитектуры".
"..Центральная база..." должна быть расположена на сервере или на рабочей станции к которой все имеют доступ, а репликация или связь (как удобнее) настраивается на клиентских компьютерах. Для обновления "серверной" базы не обязательно участие пользователя, достаточно создать процедуру которая будет оправлять на "серверную" базу дополнения и изменения в базе данных клиента по событию. (а событие может быть любым: заданное время, вход в систему, завершение работы...)
И когда "серверная" база у Вас будет обновляться с клиентских компьютеров, вот тогда можно подключать к "...центральной БД..." "...другую папку..." или "...другой компьютер...". (речь только о архитектуре СЕТЕВОЙ базы данных)
Если Вы работаете с одинаковыми БД расположенными на разных компьютерах в сети, то совет Филатова Евгения Геннадьевича:
select * from kart IN '\указать путь
то, что Вам надо. В запросах на обновление и добавление "...\указать путь..." - подставляете сетевой путь к базе данных (возможно из созданного заранее списка) и выполняете запрос.
Либо перелинковываете связанные таблицы к другой БД.

Евгений.

Приложение:

Ответ отправил: Тесленко Евгений Алексеевич (статус: 5-ый класс)
Ответ отправлен: 14.03.2007, 21:38


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное