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

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

Как можно отправлять на сервер только измененные данные [D6, MySQL, dBase, FoxPro]


Комар ©   (2005-09-05 09:56:00) 

Здравствуйте мастера
Сделал программу обычная программа работающая с базами ДБФ, так вот клиент изменил задачку и сказал чтоб программа время от врмени посылала данные на сервер MySQL, как подключатся к серверу я понял
Теперь вопрос: Как можно отправлять на сервер только те данные которые добавлены или изменены с последней отправки на сервер, чтоб каждый раз не посылать все данные с таблиц
Заранее благодарен за советы


Nikolay M.   (2005-09-06 14:43:00) [1]

Изучить связку TClientDataSet + TDataSetProvider. Редактируешь отвязный набор данных на клиенте, потом пачкой отслыаешь только то, что было изменено. В CDS это реализовано почти прозрачно для тебя и по-умному: если, например, была добавлена новая запись и сразу же удалена, то при постинге данных на сервер ничего не уйдет (экономия трафика - заказчику потом можно пальцы гнуть :) ).


Sergey13   (2005-09-06 14:31:00) [2]

2[4] Комар   (06.09.05 14:14)
>Вот начал делать так как было сказано Сергеем, поставил еще одно поле с для признаков (новая запись - 1, измененная - 2, удаленная - 3)
Я тебе такне советовал. 8-)
Нафига тебе удаленные? Какая разница новая или изменная. Для того, что ты описал в топикедостаточно логического (или аналога, или дату можно писать) поля "отправлено" - Да/Нет. При вводе/редактировании - значение поля должно устанавливаться в НЕТ. При отправке - соответственно в Да.

От проблемы с read-only dataset спасает TUpdateSQL.


Комар   (2005-09-06 14:14:00) [3]

Вот начал делать так как было сказано Сергеем, поставил еще одно поле с для признаков (новая запись - 1, измененная - 2, удаленная - 3) обычной БДЕ - шной таблицой нельзя сделать так чтоб при удалении запись оставалась но стала бы как бы невидимой
Сделал с Query select * from nnn.dbf where ee<=2
Но при попытке что либо изменить или добавить запись начала выскакивать ошибка "Cannot modify a read-only dataset" (помоему так было). Искал в форумах написано надо изменить Requestlive на True. Вроде бы записи добавляются, изменяются.
Поставил кнопку "Удалить" и написал в коде query1.FieldByName('ee').Value:='3'; Опять ошибка Dataset not edit or insert mode
Что делать?


Anatoly Podgoretsky   (2005-09-05 10:27:00) [4]

Для этого в MSSQL существует TIMESTAMP в дополнение нужен еще триггер на удалелеие.


Sergey13   (2005-09-05 10:23:00) [5]

>Теперь вопрос: Как можно отправлять на сервер только те данные которые добавлены или изменены с последней отправки на сервер, чтоб каждый раз не посылать все данные с таблиц

Наверное надо добавить соответствующие поля в исходные таблицы, в которых хранить признак отправленности.


Desdechado   (2005-09-05 10:02:00) [6]

ничего не понял
ты хочешь вести синхронно 2 БД на разных СУБД? извращенец, в натуре


Наверх

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