Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как связать две таблицы? [D6, Paradox]


V l a d i m i r ©   (2004-05-08 15:52:00) 

У меня две таблицы: главная Dep и подчиненная ProfitStatment. Необходимо, чтобы при выделении определенной записи таблицы Dep отображались все записи таблицы ProfitStatment, соответствующие выделенной. А при удалении из главной таблицы определенной записи удалялись бы все данные из подчиненной таблицы, связанные с удаляемой записью. Подскажите, пожалуйста, как это можно сделать?


varfix   (2004-05-10 20:14:00) [1]

В  BeforeDelete работает так.

with Table2 do begin
       DisableControls;
       FindKey([Table2.Fields[0].AsString]);
               while (Table2.Fields[0].AsString = Table1.Fields[0].AsString) and
               (not Eof) do
                   begin
                   if MessageDlg('Вы точно хотите удалить все записи+'?', mtInformation, mbOkCancel, 0) <> mrOk then
                   Abort
                   else
                   Delete;
                   end;
       EnableControls;
       end;


Anatoly Podgoretsky   (2004-05-09 19:46:00) [2]

V l a d i m i r   (08.05.04 16:17) [2]
Лучше удалять в BeforeDelete меньше проблем будет.
А вот в AfterDelete тяжеловато будет сделать  while Table2 головной то записи уже не будет.


mike-d   (2004-05-09 19:30:00) [3]

> Vlad ©   (08.05.04 16:46) [4]
Лучше на BeforeDetete ...
> V l a d i m i r   (08.05.04 17:11) [5]
Table2.First;
while not Table2.Eof do Table2.Delete;


V l a d i m i r   (2004-05-08 17:11:00) [4]

То есть в событии AfterDelete головной таблицы удаляю все записи из подчиненной: while Table2.RecCount<>0 Table2.delete?


Vlad   (2004-05-08 16:46:00) [5]

Один из вариантов, на событие AfterDelete мастер-датасета повесить код удаления из детайл-датасета.


Vlad   (2004-05-08 16:22:00) [6]


> V l a d i m i r   (08.05.04 16:17) [2]


> Как это исправить?

А это не ошибка. Мастер-детайл отношения нужны лишь для   отображениянескольких связанных таблиц. Удалять нужно самому.


V l a d i m i r   (2004-05-08 16:17:00) [7]

Обе таблицы проиндексированы и я связал их по индексированному полю через MasterSourse в инспекторе подчиненной таблицы. При этом все замечательно: выделяю запись в главной таблице, отображаются связанные с нею записи в подчиненной.
Но проблема состоит в том, что удаляя запись в главной таблице, записи из подчиненной не удаляются...

Как это исправить?


Vlad   (2004-05-08 16:05:00) [8]


> V l a d i m i r   (08.05.04 15:52)  

см. справку, master/detail relationships


Наверх

Титульная страница Поиск, карта сайта Написать письмо