P
pashAkka
Всем доброго времени суток!
Изучаю трехуровневую архитектуру. Написал пока простенькое приложение с такой структурой:
ASA 8 <-> ADO <-> Сервер приложения (удаленный модуль данных) <-> Socket-соединение <-> Тонкий клиент.
На тонком клиенте используются компоненты ClientDataSet.
Ситуация такая:
- делаю изменения на стороне тонкого клиента,
- потом вызываю ApplyUpdates(0) компонента ClientDataSet,
- изменения отображаются и у клиента и в базе данных,
но стоит мне вызвать Close, а потом Open у ClientDataSet, то этих обновлений не видно!
Также происходит, если я например напрямую в базе ручками что-то поменяю, то у клиента этих изменений не видно, причем не помогает ни UpdateCursorPos, ни Resync([]), ни Refresh. Помогает только перевход в программу.
Вот фрагмент кода с комментариями:
Если кто имел дело с этим, может поможете. Кстати проверил это без сервера приложений, с локальным модулем данных - вышла такая же ситуация.
Заранее спасибо за ответы
Изучаю трехуровневую архитектуру. Написал пока простенькое приложение с такой структурой:
ASA 8 <-> ADO <-> Сервер приложения (удаленный модуль данных) <-> Socket-соединение <-> Тонкий клиент.
На тонком клиенте используются компоненты ClientDataSet.
Ситуация такая:
- делаю изменения на стороне тонкого клиента,
- потом вызываю ApplyUpdates(0) компонента ClientDataSet,
- изменения отображаются и у клиента и в базе данных,
но стоит мне вызвать Close, а потом Open у ClientDataSet, то этих обновлений не видно!
Также происходит, если я например напрямую в базе ручками что-то поменяю, то у клиента этих изменений не видно, причем не помогает ни UpdateCursorPos, ни Resync([]), ни Refresh. Помогает только перевход в программу.
Вот фрагмент кода с комментариями:
Код:
// вносим изменения в CDS и применяим их
ClientDataSet1.ApplyUpdates(0);
// тут изменения видны как у клиента, так и в БД
ClientDataSet1.UpdateCursorPos;
ClientDataSet1.Resync([]);
// после этого тоже видны (взято из примера, но смысла не пойму, т.к.
// видимых изменений не происходит)
ClientDataSet1.Close;
ClientDataSet1.Open;
// вот тут уже изменеий нет, видим то, что было до модификации!
// становимся на модифицированную запись и выполняем следующие
// комманды
ClientDataSet1.RefreshRecord;
ClientDataSet1.UpdateCursorPos;
ClientDataSet1.Resync([]);
// результата нет, запись остается в старом виде :(
Если кто имел дело с этим, может поможете. Кстати проверил это без сервера приложений, с локальным модулем данных - вышла такая же ситуация.
Заранее спасибо за ответы