Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2012, 15:18   #1
Vita1y
 
Регистрация: 07.07.2012
Сообщений: 6
По умолчанию Delphi и две БД Access

Здравствуйте!
Есть 2 одинаковые по структуре базы. Данные добавляются\изменяются в обе.
В таблицах есть поле "датасоздания"
как можно в цикле синхронизировать 2 таблицы разных бд, с приоритетом "датасоздания" т.е. просто перезаписывать, а отсутствующие записи добавлять.
поля
ID(счетчик), имя(string),фамилия(string), отчество(string) номер(уникальный, string) и "датасоздания"(полный формат времени)
Vita1y вне форума Ответить с цитированием
Старый 07.07.2012, 18:15   #2
Vita1y
 
Регистрация: 07.07.2012
Сообщений: 6
По умолчанию

Неужели никто не знает? ну хоть подскажите куда копать.
Репликация -не вариант, нужно именно через цикл.
Vita1y вне форума Ответить с цитированием
Старый 07.07.2012, 22:58   #3
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

А мало чего можно сказать. Информация куцая.
С какой частотой должна происходить "синхронизация"?
Или по какому-то сигналу?
Непонятно о каком цикле идет речь. По всем записям (строкам) таблиц?
Если так, то вы отдаете себе отчет сколько нужно будет затратить ресурсов и времени чтобы пройтись хотя бы по 100 000 записям в одной и другой таблице?
Нужно будет перелопатить 10 000 000 000 строк.
Понятно, что у вас задача резко не такая (вряд ли в ваших таблицах будет столько строк). Но надо и довести до народа более подробно исходные данные.

А вообще, если не нудить, то все просто (кроме вышезаданного вопроса: "как и когда делать"):
Соединяемся с двумя БД через ADOConnection (для каждой БД свой компонент).
Для таблицы, из которой читаем можно использовать ADOTable, а для той, которая будет "синхронизироваться" - ADOQuery.
В ЦИКЛЕ while читаем данные из исходной таблицы. На каждой итерации выполняем запрос SELECT для другой таблицы (через ADOQuery), в котором в качестве условия задаем "датасоздания" из первой. Если запрос вернет пустой результат, то добавляем строку из исходной таблицы (INSERT). Если найдено, то обновляем строку (UPDATE). И то и другое - с помощью ADOQuery.

P.S. Надо осознать, что репликация - это обобщенное именование методов и приемов позволяющих привести две или более БД с одинаковой структурой к одному и тому же состоянию. Т.е. репликация и "синхронизация" в вашей интерпретации - это одно и то же.
Karabash вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
две задачи на delphi Petrovich83 Помощь студентам 1 25.04.2011 10:26
Две формы в Delphi Kotlyar562 Помощь студентам 10 05.03.2011 23:36
Две задачи на Delphi 6 VadikV Фриланс 1 12.01.2011 15:38
две задачи на Delphi: Дініс Помощь студентам 5 30.11.2009 13:55
Delphi. две задачи! St1mkA Помощь студентам 10 28.10.2009 04:44