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

> ВНИМАНИЕ!

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

> Отмена удаления строки: вопрос
1147
сообщение 18.06.2009 20:55
Сообщение #1


Бывалый
***

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

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


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


Гость






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


Бывалый
***

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

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


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


Гость






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


Бывалый
***

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

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


MS Access, ADO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.06.2009 22:42
Сообщение #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 ) - то потом откат сделать нельзя...
 К началу страницы 
+ Ответить 
1147
сообщение 18.06.2009 22:53
Сообщение #7


Бывалый
***

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

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


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


Бывалый
***

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

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


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

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

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

 



- Текстовая версия 8.07.2025 18:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"