| Костя | 
| Отправлено: 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. Если где-то при вставке/удалении произошла ошибка, откатываешь транзакцию, иначе база переходит в неактуальное состояние и становится даром нафиг никому не нужной.
 | 
|  |