![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление базы и ADO [D5]
Bogus © (2002-07-30 15:26:00)Доброго здравия уважаемым мастерам!
Есть две таблицы: первая и вторая.
Вторая связана с первой, т.е. содержит поле, соответствующее первичному ключу первой. Хочу удалить запись из первой.
Для этого пишу:
SQLCommand : tADOCommand;
Query : tADOQuery;
SQLCommand.CommandText := "delete from <вторая> where
<ключ_первой> = " + <то,что нужно> ;
SQLCommand.Execute;
Query.Delete;
Получаю ошибку: Таблица вторая содержит связанные элементы...,
или что-то в этом духе.
Вот мы и подошли к сути вопроса: как заставать таблицу вторая реально обновиться. Если не трудно, набросайте правильный вариант предидущего фрагмента.
Заранее спасибо и извините, если сильно повторяюсь.
Bogus (2002-07-30 18:14:00) [1]2 Jee
> На сколько я понял, ты хочешь удалить из "мастер" таблицы запись > ...
Верно, именно этого я и хочу. До твоей мысли я дошел, проблема именно в том, что между SQLCommand.Execute и реальным обновлением базы проходит несколько секунд. Т.е. получается, что когда я выполняю delete, таблица "деталь" как-будто еще содержит связанные записи.
Jee (2002-07-30 15:40:00) [2]На сколько я понял, ты хочешь удалить из "мастер" таблицы запись и в таблице "деталь" содержится запись со значением вшешнего ключа равному значению первичного ключа первой таблицы. Ясное дело, связь не позволит этого сделать. Сначала надо удалить из второй таблицы все записи, связанные с первой, а потом удалить из первой. Тогда в событии первой таблице BeforeDelete пишешь
SQLCommand.CommandText := "delete from <вторая> where
<внешний_ключ> = " + <Первая>.<первичный ключ>.<значение> ;
SQLCommand.Execute;
Mike Kouzmine (2002-07-30 15:34:00) [3]не совсем понятно после where