1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Проблема с Clientdataset

Тема в разделе "Delphi - программирование", создана пользователем pashAkka, 14 ноя 2005.

Статус темы:
Закрыта.
  1. pashAkka

    pashAkka Гость

    Репутация:
    0
    Всем доброго времени суток!

    Изучаю трехуровневую архитектуру. Написал пока простенькое приложение с такой структурой:

    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([]);
    // результата нет, запись остается в старом виде :(
    Если кто имел дело с этим, может поможете. Кстати проверил это без сервера приложений, с локальным модулем данных - вышла такая же ситуация.

    Заранее спасибо за ответы
     
  2. pashAkka

    pashAkka Гость

    Репутация:
    0
    Огромное всем спасибо за ответы! :)

    Почитал умные книжки и разобрался сам. :(

    Оказывается, интерфейс IAppServer, наследником которого является интерфейс, который реализует мой удаленный модуль данных, имеет тип stateless. Поэтому каждый раз, перед вызовом метода AS_GetRecords, нужно обновлять набор данных клиента.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей