Обновление данных DBExpress

У меня есть простое приложение DBExpress, использующее базу данных SQLite на C ++ Builder XE3.

Пользовательский интерфейс имеет несколько DBGrids и DBNavigators. DBGrids связаны с TDataSources, которые связаны с TClientDataSets. TClientDataSets получает данные от TDataProviders, которые получают данные из TSQLDataSet. Все подключено к TSQLConnection.

Приложение работает нормально, за исключением случаев, когда данные публикуются другим компонентом БД, не связанным с приложением. Чтобы получить новые «удаленные» данные, мне нужно дважды нажать кнопку «Обновить» в навигаторе (2).

Я получаю такое же поведение со следующим кодом:

        mClientDBSession.insertImageFile(getFileNameNoPath(f), "Note..");
DBNavigator1->BtnClick(nbRefresh);
DBNavigator1->BtnClick(nbRefresh);

MClientDBSession — это объект базы данных, не связанный с DBExpress. InsertImageFile вставляет запись БД непосредственно в базу данных SQLite и является синхронной, поэтому я знаю, что БД получила данные после выхода из функции.

Как ни странно, если я не вызываю BtnClick (nbRefresh) дважды, данные не обновляются, если смотреть на DBGrid.

В идеале у меня был бы таймер, который автоматически обновлял бы компоненты DBExpress новыми данными сервера время от времени.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector