Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 219
от 11.10.2006, 13:05

Администратор:CJ
В рассылке:Подписчиков: 264, Экспертов: 39
В номере:Вопросов: 1, Ответов: 2


Вопрос № 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"
Отправлен: 06.10.2006, 12:50
Вопрос задал: Сергей Викторович (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, Сергей Викторович!
Конечно выдаст ошибку, а Вы что ожидали?
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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное