![]() |
|
|
![]()
|
|
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Приветствую всех обитателей форума.
Я столкнулся с небольшой проблемой. У меня 2 таблицы данных. Между ними связь мастер детальный по ключевым полям. Нужно что бы при удалении записи из мастера удалялись все записи относящиеся к тому полю, но сдвига в главной табл. не происходило. Я пытаюсь удалять записи по средствам перебора по значению мастера RecNo и ключевому полю подчиненой таблицы. Высвечивается ошибка что таблица не находbncz в режиме редактирования. Спасибо. Вот код удаления из подчиненой таблицы
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
| innok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 12.10.2004 Репутация: 1 Всего: 1 |
в "Королевстве Дельфи" есть 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 |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
1. на форму кидаешь доп. TQuery
2. в поле MasterSource выбираешь TDataSource мастер-таблицы 3. пишешь в сво-ве SQL
поле ID в местер таблице и поле MASTER_ID в детаил-таблице связаны в свойстве BeforDelete мастер-таблицы
Это сообщение отредактировал(а) dsergey - 15.10.2004, 15:48 |
||||
|
|||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Неплохо было бы знать базу данных, иногда такие вещи удобно например триггерами делать
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
абсолютно согласен, но мне почему-то кажется, что он работает с Paradox Это сообщение отредактировал(а) dsergey - 15.10.2004, 16:32 |
|||
|
||||
| Digo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 30.9.2004 Где: Ростов на Дону Репутация: нет Всего: нет |
Спасибо за ответы.
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс ) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |