Кеширование TSQLQuery - как отключить?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Кеширование TSQLQuery - как отключить?

Сообщение Nick74 » 15.03.2017 14:16:14

Подскажите пожалуйста как с ним (TSQLQuery) нормально работать с кешем или как его (кеш) отключить? Что-то я после Delphi слегка в шоке.

Поясню - есть форма с полями DBEdit. Хочу при изменении полей пользователем показывать кнопку Сохранить, а при сохранении убирать ее.
В Delphi это делалось в одном месте в TDataSource.OnChangeState, а-ля Button.Visible = Query.State = dsEdit; тут не получается, так как запись сохраняется в кеш, а применяется уже потом, а ошибку у меня выдает база данных.
Хорошо, делаю показ кнопки в TDataSource.OnChangeState, в TSQLQuery.OnAfterPost пишу Query.ApplyUpdates; Button.Visible := false;
Вроде работает, если не прошло сохранение, кнопка остается активной, но вот беда - теперь при ошибке Query в состоянии dsBrowse, повторное нажатие сохранения ничего не сохраняет (А очень хочется получить ту же ошибку повторно) и надо датасет вручную переключать в dsEdit (и я так понимаю слабая гарантия, что он остался на нужной записи) и что он вообще что-то будет сохранять, так как формально ничего не изменилось в записи б), то есть еще и желательно все поля пометить как измененные). Геморрой.

Вот как это делать правильно и проще, подскажите плиз? Пока пользы в кеше не вижу, зато вижу один вред.
Nick74
незнакомец
 
Сообщения: 3
Зарегистрирован: 15.03.2017 13:55:06

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google Adsense [Bot], Majestic-12 [Bot], Yandex [Bot] и гости: 6

Рейтинг@Mail.ru