Форум: "Базы";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизОтменить сохранение редактируемой записи Найти похожие ветки
← →
neat (2006-01-19 08:09) [0]Здравствуйте все!
Есть DataSet и DBGrid. Если Table.State in [dsEdit, dsInsert] и в этот момент щёлкнуть мыщью на другой строке DBGrid запись автоматически сохраняется. Как это отменить? Пробовал обработать OnCellClick
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if Table.State in [dsEdit, dsInsert] then Table.Cancel;
end;
- не получается - видимо Post происходит раньше. BerorePost тоже не проходит, запись всё равно сохраняется.
← →
Sergey13 © (2006-01-19 09:02) [1]BeroreScroll?
← →
Vemer © (2006-01-19 09:21) [2]Dataset.CacheUpdate := True;
Dataset.CancelUpdate / Dataset.ApplyUpdate by need.
← →
neat (2006-01-19 09:46) [3]Извиняюсь, не сказал сразу, что работаю с ADO. Там нет у Table свойства CachedUpdates. Попробовал использовать CancelUpdates. Как-то странно... Изменения не сохраняются, но почему-то эта строка добавляется в конце таблицы ко всем имеющимся.
procedure TForm1.T1BeforePost(DataSet: TDataSet);
begin
if T1.State = dsEdit then
T1.CancelUpdates;
end;
Но здесь ещё подсказали вариант.
procedure TForm1.T1BeforePost(DataSet: TDataSet);
begin
if T1.State = dsEdit then begin
T1.Cancel;
Abort;
end;
end;
Работает. Спасибо всем.
← →
Desdechado © (2006-01-19 11:19) [4]> у Table свойства CachedUpdates
так не работай с Table, это гадость
работай с кэшированными датасетами, где пользователь может отменить изменения как в отдельных записях, так и в выборке в целом, не сохраняясь
← →
sniknik © (2006-01-19 11:41) [5]> что работаю с ADO. Там нет у Table свойства CachedUpdates.
там есть "аналог". не по таким же процедурам а по смыслу, начни с F1 по ltBatchOptimistic.
← →
Рустем © (2006-01-19 13:06) [6]
> neat
UpdateBatch, CancelBatch...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.015 c