Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Как связать две таблицы?   Найти похожие ветки 

 
V l a d i m i r   (2004-05-08 15:52) [0]

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


 
Vlad ©   (2004-05-08 16:05) [1]


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

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


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

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

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


 
Vlad ©   (2004-05-08 16:22) [3]


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


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

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


 
Vlad ©   (2004-05-08 16:46) [4]

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


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

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


 
mike-d ©   (2004-05-09 19:30) [6]

> 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;


 
Anatoly Podgoretsky ©   (2004-05-09 19:46) [7]

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


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

В  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;



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.059 c
3-1084277298
lovres
2004-05-11 16:08
2004.05.30
Касяк с DBCombobox. Подскажите, плз.


3-1084155882
Mishenka
2004-05-10 06:24
2004.05.30
Фильтр по полю соответствия.


6-1081533859
@Ujin
2004-04-09 22:04
2004.05.30
Как граматно отправлять и принимать данные через сокеты?


14-1083950949
kaif
2004-05-07 21:29
2004.05.30
Посмотрел инаугурацию...


6-1081949232
Yurko
2004-04-14 17:27
2004.05.30
ProgressBar для закачки файла с HTTP