![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отменить сохранение редактируемой записи [D7]
neat © (2006-01-19 08:09:00)Здравствуйте все!
Есть 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 тоже не проходит, запись всё равно сохраняется.
Рустем (2006-01-19 13:06:00) [1]
> neat
UpdateBatch, CancelBatch...
sniknik (2006-01-19 11:41:00) [2]> что работаю с ADO. Там нет у Table свойства CachedUpdates.
там есть "аналог". не по таким же процедурам а по смыслу, начни с F1 по ltBatchOptimistic.
Desdechado (2006-01-19 11:19:00) [3]> у Table свойства CachedUpdates
так не работай с Table, это гадость
работай с кэшированными датасетами, где пользователь может отменить изменения как в отдельных записях, так и в выборке в целом, не сохраняясь
neat (2006-01-19 09:46:00) [4]Извиняюсь, не сказал сразу, что работаю с 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;
Работает. Спасибо всем.
Vemer (2006-01-19 09:21:00) [5]Dataset.CacheUpdate := True;
Dataset.CancelUpdate / Dataset.ApplyUpdate by need.
Sergey13 (2006-01-19 09:02:00) [6]BeroreScroll?