| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Удаление в таблице |
| Автор: Digo 15.10.2004, 09:18 | ||
| Приветствую всех обитателей форума. Я столкнулся с небольшой проблемой. У меня 2 таблицы данных. Между ними связь мастер детальный по ключевым полям. Нужно что бы при удалении записи из мастера удалялись все записи относящиеся к тому полю, но сдвига в главной табл. не происходило. Я пытаюсь удалять записи по средствам перебора по значению мастера RecNo и ключевому полю подчиненой таблицы. Высвечивается ошибка что таблица не находbncz в режиме редактирования. Спасибо. Вот код удаления из подчиненой таблицы
|
| Автор: innok 15.10.2004, 10:13 |
| в "Королевстве Дельфи" есть 3 статьи про ADO, "Немного об использовании ADO в Delphi 1,2,3", там все подробно и прктически твой пример. Можно поискать и через яндекс по названию статьи. Сам искал. Вот выдержки: Все просто - свойству 'Unique Table' нужно присвоить имя той таблицы, над которой производятся манипуляции (удаления и исправления). ADODataSet1.Properties['Unique Table'].Value:='Calls'; Свойство 'Resync Command' используется совместно с 'Unique Table' - в этом свойстве задается команда, с помощью которой должна быть обновлена текущая строка, основываясь на значении колонок из таблицы, имя которой заданно свойством 'Unique Table'. В нашем случае: ADODataSet1.Properties['Resync Command'].Value:= 'SELECT Abonents.AbonentID AS A_AbonentID, Abonents.AbonentName, Calls.* FROM Abonents INNER JOIN Calls ON Abonents.AbonentID = Calls.AbonentID WHERE Calls.CallID = ?'; Это почти такая же SQL команда как и та, с помощью которой открыт наш набор данных - с тем лишь отличием, что она считывает только одну строку, ограничивая по условию WHERE Calls.CallID = ?. Cursor Engine подставит вместо вопросительного знака текущее значение CallId и выполнит эту команду при обновлении строки. |
| Автор: Akella 15.10.2004, 15:46 | ||||
| 1. на форму кидаешь доп. TQuery 2. в поле MasterSource выбираешь TDataSource мастер-таблицы 3. пишешь в сво-ве SQL
поле ID в местер таблице и поле MASTER_ID в детаил-таблице связаны в свойстве BeforDelete мастер-таблицы
|
| Автор: Vit 15.10.2004, 15:54 |
| Неплохо было бы знать базу данных, иногда такие вещи удобно например триггерами делать |
| Автор: Akella 15.10.2004, 16:32 | ||
абсолютно согласен, но мне почему-то кажется, что он работает с Paradox |
| Автор: Digo 15.10.2004, 21:39 |
| Спасибо за ответы. |