Вопрос № 57904: Подкажите как сделать удаление строк(и)
если вызов происходит запросам из 3-таблиц и между ними есть связь
ADOQuery1.SQL.Add('Select doc.N_vh, Org.Title, Tms.Team, doc.Who, from doc, Tms, Org Where doc.Tema = Tms.PK_Team and doc.Org = Org.PK_...
Вопрос № 57.904
Подкажите как сделать удаление строк(и)
если вызов происходит запросам из 3-таблиц и между ними есть связь
ADOQuery1.SQL.Add('Select doc.N_vh, Org.Title, Tms.Team, doc.Who, from doc, Tms, Org Where doc.Tema = Tms.PK_Team and doc.Org = Org.PK_Organ')
обычный метод
AdoQuery1.Delete; выдает ошибку
" Insufficient key column information for updating or refreshing"
Отвечает: Проходящий Мимо
Здравствуйте, Сергей Викторович!
Конечно выдаст ошибку, а Вы что ожидали?
1. чтобы удалить запись, нужно использовать конструкцию
delete from TABLE where...
2. операцию удаления желательно производить только над одной таблицей
3. нужно указать параметры конкретной записи или группы записей, в ином случае будет стерто все содержимое таблицы (например, Tms.id_table=654)
Дерзайте!
--------- Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 7-ой класс)
Ответ отправлен: 06.10.2006, 13:14 Оценка за ответ: 4
Отвечает: sir henry
Здравствуйте, Сергей Викторович!
Обычно не рекомендуется делать запросы из нескольких таблиц редактируемыми. Дело в том, что набор данных в Вашем запросе содержит данные из нескольких таблиц и, собственно говоря, в природе его не существует. Следовательно не существует и этой строки.
" Insufficient key column information for updating or refreshing" - обозначает что ADO не может идентифицировать запись, которую надо удалить. Для ее идентификации в запрос должно включаться уникальное ключевое поле. Однако все равно рекомендуется проводить удаление отдельной командой, а не делать это в наборе данных самого запроса.
Допустим у Вас уникальный индекс построен по полю N_vh, тогда чтобы удалить запись из таблицы doc, Вы передадите значение этого поля как параметр в запрос на удаление.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 07.10.2006, 11:00