Костя |
Отправлено: 06.05.2004, 15:08 |
|
Не зарегистрирован
|
Есть такая проблема: таблица отображаются пользователю через DbGrid. У Grid'а стоит свойство MultiSelect=true. Пользователь выбирает записи в Grid'е (произвольно), нажимает на кнопку и отмеченные записи копируются в другую таблицу, из этой удаляются. Как попроще реализовать такую процедуру ? |
|
Gedeon |
Отправлено: 06.05.2004, 16:41 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Два запроса первый INSERT в нужную таблицу, второй DROP из первой.
|
|
Костя |
Отправлено: 07.05.2004, 08:24 |
|
Не зарегистрирован
|
А как с помощью DROP удалить записи ? Насколько я знаю можно удалить таблицу, ещё что-то... а записи как ? |
|
Gedeon |
Отправлено: 07.05.2004, 08:46 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
C DROP — это я погорячился, это удаление всей таблицы, удалить строки можно с помощью инструкции DELETE
DELETE TableName
WHERE ВашиУсловия.
Также могу посоветовать компонент BatchMove со вкладки BDE.
QUOTE |
TBatchMove encapsulates Borland Database Engine (BDE) features that let you to duplicate a dataset, append records from one dataset to another, update records in one dataset with records from another dataset, and delete records from one dataset that match records in another dataset. |
Правда это если только вы используете БДЕ.
|
|
olegenty |
Отправлено: 07.05.2004, 08:54 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
и всё это в одной транзакции, без всякого AutoСommit, а то за#####ся потом актуальные данные вычислять при сбоях...
|
|
Костя |
Отправлено: 11.05.2004, 15:07 |
|
Не зарегистрирован
|
Я использую ADO.
Не думал, что столько проблемм будет. Пока оптимального варианта не нашёл. |
|
Костя |
Отправлено: 11.05.2004, 15:09 |
|
Не зарегистрирован
|
Был бы компонент типа BatchMove для ADO, была бы вообще сказка! |
|
olegenty |
Отправлено: 11.05.2004, 15:23 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
1. Открываешь ОТДЕЛЬНЫЙ коннект. (потому что в ADO транзакции идут на уровне коннекта. 1 транзакция = один коннект, если не брать во внимание вложенность транзакций. а вложенность — это ненужный хлам, поэтому во внимание не беру, поэтому 1 Connection = 1 транзакция)
2. Явно стратуешь транзакцию.
3. Выполняешь вставку, потом удаление.
4. Явно завершаешь транзакцию.
5. Если где-то при вставке/удалении произошла ошибка, откатываешь транзакцию, иначе база переходит в неактуальное состояние и становится даром нафиг никому не нужной.
|
|