Кліпаю тут на дозвіллі програму базу даних членів церкви. Все чудово, але вона не хотіла зберігати внесені в записи зміни при використанні DB-aware компонентів (TDBEdit, TDBGrid і т.д.). Намучившися в пошуках баґа вже думав, що такий глюкавий TSQLite3Connection і думав прописувати всі запроси вручну. Але вчора знайшов простенький приклад і там все працює. При порівнянні, вияснилося, що якщо в Design-time в об’єкті SQLite3Connection встановити властивість Connected в True, та в відповідному SQLQuery Active в True, то база виявляється заблокованою і зміни не зберігаються. Як що ж зробити навпаки, то все чудово зберігається!
Ну і в події AfterPost об’єкта SQLQuery треба прописати щось таке:
procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet);
var bm: TBookMark;
begin
try
bm := SQLQuery1.GetBookmark;
SQLQuery1.ApplyUpdates;
if SQLTransaction1.Active then
begin
SQLTransaction1.CommitRetaining;
SQLQuery1.GotoBookmark(bm);
end;
except
SQLTransaction1.Rollback;
end;
end;
Підглянув ось тут http://professorcarlos.blogspot.com/2010/02/lazarus-acessando-banco-de-dados-com_24.html
Немає коментарів:
Дописати коментар