![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
узнать запрос dataset на изменение данных
ply © (2008-06-08 19:51:00)как узнать запрос, который DataSet посылает базе для изменения данных (при вызове DataSet.Post)
MsGuns (2008-06-09 21:07:00) [1]Ты ответы читаешь ? В [10] рецепт дан. То, что ты навыдумывал - это склад тяпок и граблей.
ply (2008-06-09 17:19:00) [2]вот что придумал:
На сервере находится главная таблица с клиентами. На локальных ПК - ее копии, которые каждые полчаса приводятся в соответствие с главной - для возможности просмотра базы офлайн и отображение данных в связанных выборках.
Изменения будут происходить только в online-режиме.
Исключение составляет лишь баланс клиента. Изменеиня будут записываться в специальную таблицу и применяться при подключении к главной базе.
вродебы должно работать...
ply (2008-06-09 17:07:00) [3]Sergey13, субд - mysql
таблиц много, но синхронизировать надо только одну, таблицу клиентов. Остальные данные на каждом компьютере должны быть разными
ply (2008-06-09 17:03:00) [4]это понятно... только надо как-то сделать чтобы при потере соединяния с Интернетом можно было бы работать с базой клиентов, а потом, при восстановлении подключения, применить изменения к главной базе
Sergey13 (2008-06-09 16:59:00) [5]> [9] ply (09.06.08 16:40)
> например, в главной базе клиента нет, а влокальной есть.
> Это можно расценивать как добавление клиента и то что он
> был удален с другого компьютера.
Для этого надо не удалять а ставить метку о его удалении.
> закачивать на него изменения в виде запросов к базе, и скачивать,
> а затем выполнять запросы, сделанные с других компьютеров.
Если это не одна табличка, а несколько связанных, могут быть проблемы с целостностью данных. Так в лоб эту проблемму решать стремно, ИМХО.
Что за СУБД? Может есть встроенная репликация?
clickmaker (2008-06-09 16:47:00) [6]> [9] ply (09.06.08 16:40)
для этого больше ClientDataSet + WebConnection подходит
ply (2008-06-09 16:40:00) [7]вот задача
нужно сохранять все sql-запросы, изменяющие данные
а вот зачем оно надо:
база клиентов должн быть доступна из разных точек. Синхронизацию хочу сделать через интернет. Но так как бывают перебои в связи с сетью, нужно чтобы была возможность редактировать данные оффлайн, с последующим их обновлением на других компьютерах, на которых данные не редактировались.
думаю сделать так:
Все сделанные изменения хранить в виде sql-запросов к базе.
Компьютеры будут периодически подключасться к серверу в Интернете и закачивать на него изменения в виде запросов к базе, и скачивать, а затем выполнять запросы, сделанные с других компьютеров.
Есть еще вариант сделать главную базу данных клиентов в интернете и периодически синхронизировать с ней локальные базы. Только пока я смутно представляю ка кэто сделать: например, в главной базе клиента нет, а влокальной есть. Это можно расценивать как добавление клиента и то что он был удален с другого компьютера.
Anatoly Podgoretsky (2008-06-09 16:22:00) [8]
> ручками неохота, так как в базу надо заносить только измененные
> значения?
Зачем, ты думаешь, что то изменится, если до запроса а было равно 5, и без анализа а=5 что то изменится? Ты как то определишь, что первый 5 не измененый, а второй 5 измененый. Не стоит ли заняться делом или точно объяснить задачу, зачем такое нужно. Только это лишняя ненужная работа, которая может снизить производительность, особенно при большом количестве полей.
clickmaker (2008-06-09 16:18:00) [9]> может можно как-то узнать какие поля и как изменились?
UpdateStatus OldValue NewValue
Поросенок Винни-Пух (2008-06-09 16:14:00) [10]Можно конечно.
ply (2008-06-09 16:13:00) [11]ручками неохота, так как в базу надо заносить только измененные значения?
может можно как-то узнать какие поля и как изменились?
MsGuns (2008-06-09 12:46:00) [12]Писать запрос "ручками"
ply (2008-06-09 12:45:00) [13]
> Воспользоваться средствами мониторинга для соответствующей
> БД?
хотелось бы ДО запроса
sniknik (2008-06-08 20:18:00) [14]или средствами ODBC если он есть(можно внести) в цепочке "приложение -> ... -> база"
Тын-Дын (2008-06-08 20:12:00) [15]
> ply (08.06.08 19:51)
> как узнать запрос, который DataSet посылает базе для изменения
> данных (при вызове DataSet.Post)
Воспользоваться средствами мониторинга для соответствующей БД?