Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 13.08.2010
Сообщений: 74

Синхронизация нескольких баз

02.12.2012, 18:36. Показов 4365. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для начала опишу то, что хотел сделать и чего добился:
1. Базой пользуются несколько пользователей, т.е. я каждый день высылаю обновленную базу, в которой пользователи работают.
2. Вечером пользователи высылают мне базу. В базе пользователя, путем запросов выделяю записи, созданные на текущую дату, затем экспортирую в exel(конечно же все одной кнопкой)
3. Теперь импортирую в основную базу(которая находиться у меня) из exel, то, что экспортировал.

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

Теперь о проблеме:
База не совсем актуальная, а скорее совсем не актуальная . Дело в том, что таким способом я не вижу внесенные изменения в записях, что, как понимаете не есть гуд. По этой причине данный алгоритм синхронизации баз потерпел фиаско.
В идеале, конечно было бы доработка алгоритма, потому как много придется менять, но если это не возможно, то хотелось бы узнать новый алгоритм, который бы учитывал и новые записи, и изменения в старых.
Заранее благодарен за ответ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2012, 18:36
Ответы с готовыми решениями:

Синхронизация баз данных
Вечер добрый, уважаемые программисты, вопрос такой, имеется база данных, разделенная на базу и интерфейс, вести ее нужно на 10 ПК, файлы на...

Синхронизация баз данных
Подскажите как грамматнее реализовать синхронизацию (взаимодействие) нескольких баз данных. Есть три сотрудника, сайт и база с десятью...

Анализ нескольких баз одинаковой структуры
Имеется несколько баз одинаковой структуры, бэкапнутые по месяцам, в виде report.01 ... Создал анализ текущего месяца в отдельном файле...

17
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
02.12.2012, 19:06
Цитата Сообщение от ДмитрийСтариков Посмотреть сообщение
2. Вечером пользователи высылают мне базу. В базе пользователя, путем запросов выделяю записи, созданные на текущую дату, затем экспортирую в exel(конечно же все одной кнопкой)
3. Теперь импортирую в основную базу(которая находиться у меня) из exel, то, что экспортировал.
Зачем exel? Просто присоединится к таблицам присланных баз поочередно разве нельзя, чтобы найти записи с текущими датами? Заодно можно найти и измененные (удаленные) старые.

Рассматривался вариант с репликами баз данных (у Вас основная). Чем он не устраивает - это же стандартное средство для таких ситуаций?
1
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
02.12.2012, 19:10
Дмитрий, Репликация не подойдет?

Добавлено через 3 минуты
ltv_1953, опоздал
1
2 / 2 / 0
Регистрация: 13.08.2010
Сообщений: 74
02.12.2012, 19:52  [ТС]
Про "Репликации" в первый раз слышу, буду узнавать , всем огромное спасибо

Добавлено через 40 минут
Цитата Сообщение от Андрэич Посмотреть сообщение
Дмитрий, Репликация не подойдет?

Добавлено через 3 минуты
ltv_1953, опоздал
На сколько я понимаю, портфельная репликация - это самый простой способ, который мне вполне подойдет, вот только возникает проблема: пытаюсь перенести базу (Access 2007) в портфель, а он мне пишет, что не может работать с базами 2000 - 2003 года и просит преобразовать базу.... Что за ерунда, подскажите плиз
0
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
02.12.2012, 20:04
Цитата Сообщение от ДмитрийСтариков Посмотреть сообщение
Про "Репликации" в первый раз слышу, буду узнавать , всем огромное спасибо

Добавлено через 40 минут


На сколько я понимаю, портфельная репликация - это самый простой способ, который мне вполне подойдет, вот только возникает проблема: пытаюсь перенести базу (Access 2007) в портфель, а он мне пишет, что не может работать с базами 2000 - 2003 года и просит преобразовать базу.... Что за ерунда, подскажите плиз
Не сталкивался.
1. Насколько помню, в 2007 Офисе появилось специальное средство в меню папок - синхронизацию, попробуйте (на уровне догадки).
2. Преобразуйте, как хочет

Добавлено через 3 минуты
3. Возможно, не осилили главу до конца: там есть ещё варианты, на мой взгляд, практичнее и проще с точки зрения уже продвинутого уровня...
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
02.12.2012, 20:05
Цитата Сообщение от ДмитрийСтариков Посмотреть сообщение
... пытаюсь перенести базу (Access 2007) в портфель...
Вот, что пишет Microsoft
Репликация не поддерживается в файлах формата Office Access 2007. Можно использовать Office Access 2007 для репликации базы данных, созданной в более раннем формате, но нельзя сделать репликацию базы данных, созданной в формате Office Access 2007.
2
2 / 2 / 0
Регистрация: 13.08.2010
Сообщений: 74
02.12.2012, 20:23  [ТС]
В том то и дело, что не пойму чего он хочет. У меня итак не 2000 и не 2003. Синхронизацию не могу найти.... В описании работы с репликами написано так "Сервис → Репликация → Создать реплику" в 2007 нет "Сервис" может где в другом месте.. Подскажите, кто знает?

Добавлено через 4 минуты
Цитата Сообщение от Андрэич Посмотреть сообщение
Не сталкивался.
1. Насколько помню, в 2007 Офисе появилось специальное средство в меню папок - синхронизацию, попробуйте (на уровне догадки).
2. Преобразуйте, как хочет

Добавлено через 3 минуты
3. Возможно, не осилили главу до конца: там есть ещё варианты, на мой взгляд, практичнее и проще с точки зрения уже продвинутого уровня...
Верно, я читаю и пытаюсь сразу сделать, возникают ошибки - пишу, прошу прощения, но время экономиться, на данном примере видно явно

Добавлено через 58 секунд
Цитата Сообщение от minob Посмотреть сообщение
Вот, что пишет Microsoft
А что делать-то?

Добавлено через 12 минут
В инете нешел только такое решение: для пользователей нужно преобразовать свою базу в 2000(2003) и разослать в таком виде, затем мол она с репликами можно решить вопрос. Вот только всплывает другая проблема. В 2003 некоторые важные составляющие перестают работать. Так что это не есть решение проблемы. Какие еще есть варианты???
0
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
02.12.2012, 20:38
Цитата Сообщение от ДмитрийСтариков Посмотреть сообщение
В том то и дело, что не пойму чего он хочет. У меня итак не 2000 и не 2003. Синхронизацию не могу найти.... В описании работы с репликами написано так "Сервис → Репликация → Создать реплику" в 2007 нет "Сервис" может где в другом месте.. Подскажите, кто знает?

Добавлено через 4 минуты


Верно, я читаю и пытаюсь сразу сделать, возникают ошибки - пишу, прошу прощения, но время экономиться, на данном примере видно явно

Добавлено через 58 секунд


А что делать-то?

Добавлено через 12 минут
В инете нешел только такое решение: для пользователей нужно преобразовать свою базу в 2000(2003) и разослать в таком виде, затем мол она с репликами можно решить вопрос. Вот только всплывает другая проблема. В 2003 некоторые важные составляющие перестают работать. Так что это не есть решение проблемы. Какие еще есть варианты???
Наверно, есть один вариант: пользоваться для разработки А2003; наоборот, не использовать "как-бы усовершенствования" версий выше 2003 (типа полей Вложение, "многозначных полей"...)
(Ещё один случай в копилку "чем лучше А2003"...)

Добавлено через 4 минуты
Плюс к тому, разделять файл на интерфейс (клиент) и таблицы. Файл с таблицами делать в .mdb, который можно синхронизировать
2
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.12.2012, 20:45
Непереносимость продукта большой грех. Очень многие, начав с Jet SQL, продолжили работу в серверных БД. А там поля типа Вложения, многозначные или подстановки в таблицах, если и есть, то в совершенно ином виде и напрямую никак не переносятся. И чтобы не обрекать себя на бесполезную, вообщем-то работу по приведению полей к стандартным типам, лучше сразу пользоваться только такими. Тем более, что работы по преобразованию довольно часто велики по объему переделок, в частности многозначные поля требуют введения новых таблиц и сервисов по их обслуживанию.
0
2 / 2 / 0
Регистрация: 13.08.2010
Сообщений: 74
02.12.2012, 20:52  [ТС]
Дело в том, что уже много(очень)работы проделано в 2007 и делать снова в 2003 то же самое не просто ломы, а очень ломы, на сколько понимаю решения нет, так что буду искать что-то нетривиальное, по крайней мере постараюсь

Добавлено через 44 секунды
Цитата Сообщение от mobile Посмотреть сообщение
Непереносимость продукта большой грех. Очень многие, начав с Jet SQL, продолжили работу в серверных БД. А там поля типа Вложения, многозначные или подстановки в таблицах, если и есть, то в совершенно ином виде и напрямую никак не переносятся. И чтобы не обрекать себя на бесполезную, вообщем-то работу по приведению полей к стандартным типам, лучше сразу пользоваться только такими. Тем более, что работы по преобразованию довольно часто велики по объему переделок, в частности многозначные поля требуют введения новых таблиц и сервисов по их обслуживанию.
Слов красивых много, а где решение проблемы????
0
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
02.12.2012, 20:58
mobile,
читал, что в "новых" версиях SQL введен такой многозначный тип. Но не уверен, что будет работать, например, с MS SQL...
Но не уверен, так как не пробовал...
???
(ради ликбеза :-) )
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.12.2012, 21:06
Цитата Сообщение от ДмитрийСтариков Посмотреть сообщение
Дело в том, что уже много(очень)работы проделано в 2007 и делать снова в 2003 то же самое не просто ломы, а очень ломы, на сколько понимаю решения нет, так что буду искать что-то нетривиальное, по крайней мере постараюсь

Добавлено через 44 секунды


Слов красивых много, а где решение проблемы????
Моя реплика относилась к Вашему пассажу
Цитата Сообщение от ДмитрийСтариков Посмотреть сообщение
Вот только всплывает другая проблема. В 2003 некоторые важные составляющие перестают работать. Так что это не есть решение проблемы. Какие еще есть варианты???
Для студентческих работ проходит многое, но у Вас, судя по всему, промышленная разработка. А к ним иные требования. И отвечать, советовать что-либо, пока не решены основные вопросы, я не предполагаю.

Добавлено через 3 минуты
Цитата Сообщение от Андрэич Посмотреть сообщение
mobile,
читал, что в "новых" версиях SQL введен такой многозначный тип. Но не уверен, что будет работать, например, с MS SQL...
Но не уверен, так как не пробовал...
???
(ради ликбеза :-) )
Да, я тоже слышал. Но пока не работал с ним. В оракле такое есть давно, но организация совершенно иная, чем решение в Access, где это сделано через задний проход - есть скрытая системная таблица, задающая отношение "многие-ко многим" и с ее помощью реализуются многозначные поля.
1
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
02.12.2012, 21:16
Цитата Сообщение от mobile Посмотреть сообщение
... решение в Access, где это сделано через задний проход - есть скрытая системная таблица, задающая отношение "многие-ко многим" и с ее помощью реализуются многозначные поля.
Дык. А как они могли ещё это сделать в рамках реляционной модели?
(Имхо, скрытые таблицы индексов ведь прижились без критики?)
0
2 / 2 / 0
Регистрация: 13.08.2010
Сообщений: 74
02.12.2012, 21:38  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Моя реплика относилась к Вашему пассажу
Для студентческих работ проходит многое, но у Вас, судя по всему, промышленная разработка. А к ним иные требования. И отвечать, советовать что-либо, пока не решены основные вопросы, я не предполагаю.
Да, это промышленная задача, в рамках самостоятельной разработки не программиста, а пользователя, так, что можно уровнять со студенческой...
По методу ТРИЗ вышел на разбиение задачи на несколько подзадач, т.е.: если раньше была одна таблица "Звонки", в которой были поля "Цель_звонка" и "Результат_звонка", при внесении изменений в "Результат_звонка", изменения не отслеживались, то при новом раскладе можно разделить "Звонки" на две таблицы "Цель_звонка" и "Результат_звонка", в каждой из которых будет поле "Дата_создания" и отслеживать так... Но что-то мне не очень нравиться такой подход, может кто-нибудь подскажет более правильный алгоритм????
0
 Аватар для Андрэич
2842 / 774 / 41
Регистрация: 20.05.2012
Сообщений: 2,055
02.12.2012, 22:05
Цитата Сообщение от mobile Посмотреть сообщение
Моя реплика относилась к Вашему пассажу
Для студентческих работ проходит многое, но у Вас, судя по всему, промышленная разработка. А к ним иные требования. И отвечать, советовать что-либо, пока не решены основные вопросы, я не предполагаю.

Добавлено через 3 минуты
Да, я тоже слышал. Но пока не работал с ним. В оракле такое есть давно, но организация совершенно иная, чем решение в Access, где это сделано через задний проход - есть скрытая системная таблица, задающая отношение "многие-ко многим" и с ее помощью реализуются многозначные поля.
[QUOTE=ДмитрийСтариков;3791315]
Цитата Сообщение от mobile Посмотреть сообщение
Моя реплика относилась к Вашему пассажу
Для студентческих работ проходит многое, но у Вас, судя по всему, промышленная разработка. А к ним иные требования. И отвечать, советовать что-либо, пока не решены основные вопросы, я не предполагаю.

Да, это промышленная задача, в рамках самостоятельной разработки не программиста, а пользователя, так, что можно уровнять со студенческой...
По методу ТРИЗ вышел на разбиение задачи на несколько подзадач, т.е.: если раньше была одна таблица "Звонки", в которой были поля "Цель_звонка" и "Результат_звонка", при внесении изменений в "Результат_звонка", изменения не отслеживались, то при новом раскладе можно разделить "Звонки" на две таблицы "Цель_звонка" и "Результат_звонка", в каждой из которых будет поле "Дата_создания" и отслеживать так... Но что-то мне не очень нравиться такой подход, может кто-нибудь подскажет более правильный алгоритм????
Дмитрий,
вы бы скинули посмотреть структуру имеющихся таблиц, лучше скрином схемы данных, для наглядности, или файлом
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
02.12.2012, 22:17
1. Выбрав 2007 Вы сами лишили себя стандартного средства - реплик баз данных.
2. Существует доморощенный способ - каждая обрабатываемая таблица из основной базы сравнивается с соответствующей таблицей из пользовательской базы с использованием трех запросов, определяющих новые записи, удаленные записи, измененные записи. По результатам этих запросов принимается решение о внесении изменений в основную базу. Для двух баз Access нужды применять его не было, но для Access и выгрузки из другой базы он вполне работал.
3. Пользователи, во избежании коллизий (внесения разными пользователями изменений в одну и туже запись), получают для работы не всю базу, а только ту ее часть, которая их касается (если пользователи торговые агенты, например, то они получают только данные, касающиеся их клиентов).
1
2 / 2 / 0
Регистрация: 13.08.2010
Сообщений: 74
02.12.2012, 22:35  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
1. Выбрав 2007 Вы сами лишили себя стандартного средства - реплик баз данных.
2. Существует доморощенный способ - каждая обрабатываемая таблица из основной базы сравнивается с соответствующей таблицей из пользовательской базы с использованием трех запросов, определяющих новые записи, удаленные записи, измененные записи. По результатам этих запросов принимается решение о внесении изменений в основную базу. Для двух баз Access нужды применять его не было, но для Access и выгрузки из другой базы он вполне работал.
3. Пользователи, во избежании коллизий (внесения разными пользователями изменений в одну и туже запись), получают для работы не всю базу, а только ту ее часть, которая их касается (если пользователи торговые агенты, например, то они получают только данные, касающиеся их клиентов).
Спасибо, именно то, что нужно, попытаюсь реализовать, только вот как это сделать, пока не знаю как путем запроса определить новые записи, а также изменение в существующих, подскажите... Нет, новые знаю, можно по дате создания, а как определить те, в которых сделаны изменения?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
03.12.2012, 00:33
Есть Таблица с ключевым полем Запись_Код, который пользователи изменять не могут (тип счетчик). Таблица (в основной базе) сравнивается с ее "копией" Таблица1 в копии пользователя.
Новые определяются запросом
SQL
1
2
3
SELECT Таблица1.*
FROM Таблица RIGHT JOIN Таблица1 ON Таблица.Запись_Код = Таблица1.Запись_Код
WHERE Таблица.Запись_Код IS NULL;
Удаленные запросом
SQL
1
2
3
SELECT Таблица.*
FROM Таблица LEFT JOIN Таблица1 ON Таблица.Запись_Код = Таблица1.Запись_Код
WHERE Таблица1.Запись_Код IS NULL;
Измененные запросом
SQL
1
2
SELECT Таблица1.*
FROM Таблица INNER JOIN Таблица1 ON Таблица.Запись_Код = Таблица1.Запись_Код;
условие WHERE, которое нужно добавить в этом запросе, должно проверять, есть ли хотя бы одно несовпадение в полях Таблицы.
И так для каждой таблицы, которую нужно синхронизировать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2012, 00:33
Помогаю со студенческими работами здесь

Как получить список таблиц по маске из нескольких баз данных?
Просьба помочь решить проблему, сам не осилю: Есть база mybase.mdb (access 2003). В корневой директории есть папка /import , а в ней...

синхронизация баз
народ, подскажите, кто знает есть 2 веб сервера в разных городах, на одном стоит mySql, работает веб-чат кот. использует MySql, ...

Синхронизация 2х баз данных
Всем привет. Сейчас решаю проблему, есть 2 компа на каждом идентичные базы, 2 компа обрабатывают большой поток информации. Только 1 комп -...

помогите! синхронизация баз
чем можно быстро осуществить сабж для access? желательно двунаправлено...

Синхронизация баз данных
Добрый день, подскажите как осуществить синхронизацию/репликацию одинаковых баз данных MSSQL 2005 или 2008. Ссылки на литературу тоже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru