Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

узнать запрос 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)


Воспользоваться средствами мониторинга для соответствующей БД?


Наверх

Титульная страница Поиск, карта сайта Написать письмо