Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление в таблице 
:(
    Опции темы
Digo
  Дата 15.10.2004, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 30.9.2004
Где: Ростов на Дону

Репутация: нет
Всего: нет



Приветствую всех обитателей форума.
Я столкнулся с небольшой проблемой. У меня 2 таблицы данных. Между ними
связь мастер детальный по ключевым полям. Нужно что бы при удалении
записи из мастера удалялись все записи относящиеся к тому полю, но сдвига в главной табл.
не происходило. Я пытаюсь удалять записи по средствам перебора по значению
мастера RecNo и ключевому полю подчиненой таблицы. Высвечивается ошибка что таблица не находbncz в режиме редактирования.
Спасибо. qstn.gif
Вот код удаления из подчиненой таблицы
Код

     Max:=DataModule1.CardList.RecordCount;
     DataModule1.CardList.First;
     for i:=1 to max do
     begin
    {ошибка! }    If DataModule1.CardList.Fields[1].AsInteger=DataModule1.Alldilers.RecNo then begin DataModule1.CardList.Edit; DataModule1.CardList.Delete; DataModule1.CardList.Post; end;
     DataModule1.CardList.Next;
     end;

--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс )
PM MAIL WWW ICQ   Вверх
innok
Дата 15.10.2004, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 и выполнит эту команду при обновлении строки.


PM MAIL   Вверх
Akella
Дата 15.10.2004, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



1. на форму кидаешь доп. TQuery
2. в поле MasterSource выбираешь TDataSource мастер-таблицы
3. пишешь в сво-ве SQL
Код
DELETE FROM detailtable WHERE MASTER_ID = :ID


поле ID в местер таблице и поле MASTER_ID в детаил-таблице связаны

в свойстве BeforDelete мастер-таблицы
Код
 if MessageDlg('Удалить все записи из мастер-таблицы', mtWarning, [mbYes, mbNo], 0) = mrYes then  Query1.ExecSQL;


Это сообщение отредактировал(а) dsergey - 15.10.2004, 15:48
PM MAIL   Вверх
Vit
Дата 15.10.2004, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Akella
  Дата 15.10.2004, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата
Неплохо было бы знать базу данных, иногда такие вещи удобно например триггерами делать


абсолютно согласен, но мне почему-то кажется, что он работает с Paradox

Это сообщение отредактировал(а) dsergey - 15.10.2004, 16:32
PM MAIL   Вверх
Digo
Дата 15.10.2004, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 30.9.2004
Где: Ростов на Дону

Репутация: нет
Всего: нет



Спасибо за ответы.
--------------------
640кб оперативной памяти хватит миру по самые уши (Билл Гейтс )
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.