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