![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно отправлять на сервер только измененные данные [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 БД на разных СУБД? извращенец, в натуре