IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Отмена удаления строки: вопрос
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Можно ли вернуть в базу данных удаленную строку из таблицы?
Ctrl+z в данном случае не помогает, cancelupdates тоже.
Например пользователь случайно выделил не ту строку и удалил ее. Как можно отменить это действие?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Если ты не работал с "отложенными изменениями" (Batch Updates), то данные утеряны безвозвратно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Нет, с отложенными замисями не работал. Но записи нельзя терять безвозвратно. Ты мог бы по подробней объяснить как этого не допустить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Тип БД какой? (Paradox/IB/Oracle/...) Метод доступа к данным? (ADO/BDE/ODBC/...)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


MS Access, ADO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Устанавливаешь в DataSet (что там у тебя, таблица? Значит, ADOTable) свойство LockType в ltBatchOptimistic (что означает пакетные изменения), и добавляешь пару кнопок: "Применить" и "Отменить". Вот с такими обработчиками:
// Это - "Применить"
procedure TForm1.btnApplyClick(Sender: TObject);
begin
ADOTable1.UpdateBatch();
end;

// Это - "Отменить"
procedure TForm1.btnCancelClick(Sender: TObject);
begin
ADOTable1.CancelBatch();
end;

Если теперь удалишь строку из Dataset-а по ошибке, то можно восстановить изменения, нажав на "Отменить". Визуально после удаления строка из Грида исчезнет, фактически из базы - нет, пока не будет применен метод UpdateBatch... Ну, а если уж нажал на "Применить" (второй раз ошибочно? Не может быть, это уже осознанно smile.gif ) - то потом откат сделать нельзя...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


ясно. Большое спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Допустим, из таблицы было удалено несколько десятков строк. И после этого удаляется одна по ошибке. Нужно вернуть только последнюю удаленную, а таким способом вернутся все строки если при каждом удалении не нажимать "применить".
Нет ли спобоса возвращать удаленные строки не все сразу, а по-одной (по принципу ctrl+z), начиная с последней удаленной?

Сообщение отредактировано: 1147 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.09.2025 17:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name