Thread View: pl.comp.lang.delphi.bazy-danych
3 messages
3 total messages
Started by Radko
Fri, 23 Apr 1999 06:19
Kasowanie z tabel w relacji
Author: Radko
Date: Fri, 23 Apr 1999 06:19
Date: Fri, 23 Apr 1999 06:19
44 lines
2244 bytes
2244 bytes
Mam trzy tabele, w relacjach jak poni¿ej:
MASTER
|_DETAIL1 (Master dla DETAIL2)
|_DETAIL2
W momencie usuwania rekordu z tabeli MASTER,. chcê aby zosta³y usuniête
wszystkie odpowiadaj¹ce mu rekordy z tabeli DETAIL1. I odpowiednio w
momencie usuwania rekordu z tabeli DETAIL1, wszystkie odpowiadaj¹ce mu
rekordy z DETAIL2. W tym celu wykorzystujê zdarzenie OnBeforeDelete.
Wszystkie trzy tabele maj¹ wspóln¹ obs³ugê tego zdarzenia, jak poni¿ej:
Procedure OnBeforeDeleteAnyTable(Sender : TDataSet);
Begin
If Sender = MASTER then KASUJ_Z_DETAIL1 else
If Sender = DETAIL1 then KASUJ_Z_DETAIL2;
End;
Procedury KASUJ_Z_DETAILn maj¹ identtyczn¹ postaæ (zmienia siê jedynie
tabela).
Procedure KASUJ_Z_DETAILn;
Begin
With DETAILn do
try
DisableControls;
First;
While Not Eof do
Delete;
Finally
EnableControls;
End;
End;
Uzyskujê ciekawy efekt. W momencie, kiedy kasujê pojedyncze rekordy z
tabeli DETAIL1, wszystko jest OK. Kasowany jest rekord z DETAIL1 i
wszystkie z DETAIL2, które mu odpowiadaj¹. Jednak, kiedy kasujê rekord
MASTER, kasowane s¹ poprawnie wszystkie z DETAIL1. Rekordy z DETAIL2
kasowane s¹ jednak poprawnie jedynie dla pierwszego usuwanego rekordu z
DETAIL1, dla reszty pozostaj¹ w bazie. Czy kto mo¿e zetkn¹³ siê z takim
problemem i wie z czego on wynika ?
radko@uoo.univ.szczecin.pl
Re: Kasowanie z tabel w relacji
Author: Zbyszek Z.
Date: Fri, 23 Apr 1999 07:48
Date: Fri, 23 Apr 1999 07:48
47 lines
2537 bytes
2537 bytes
DisableControls w KASUJ_Z_DETAILn, powoduje ze nie sa wyzwalane zdarzenia
dal tej tablicy w tym wypadku Detail2.
--
Zbyszek Zarzycki
BSC Polska
Spotkanie uzytkowników produktów INPRISE/BORLAND
Warszawa, 11-12 maj 1999
wiecej informacji http://www.inprise.com.pl/events/icon99.htm
Radko napisał(a) w wiadomości:
<372010DE.10AD72B1@uoo.univ.szczecin.pl>...
Mam trzy tabele, w relacjach jak poniżej:
MASTER
|_DETAIL1 (Master dla DETAIL2)
|_DETAIL2
W momencie usuwania rekordu z tabeli MASTER,. chcę aby zostały usunięte
wszystkie odpowiadające mu rekordy z tabeli DETAIL1. I odpowiednio w
momencie usuwania rekordu z tabeli DETAIL1, wszystkie odpowiadające mu
rekordy z DETAIL2. W tym celu wykorzystuję zdarzenie OnBeforeDelete.
Wszystkie trzy tabele mają wspólną obsługę tego zdarzenia, jak poniżej:
Procedury KASUJ_Z_DETAILn mają identtyczną postać (zmienia się jedynie
tabela).
Procedure KASUJ_Z_DETAILn;
Begin
With DETAILn do
try
DisableControls;
First;
While Not Eof do
Delete;
Finally
EnableControls;
End;
End;
Uzyskuję ciekawy efekt. W momencie, kiedy kasuję pojedyncze rekordy z
tabeli DETAIL1, wszystko jest OK. Kasowany jest rekord z DETAIL1 i wszystkie
z DETAIL2, które mu odpowiadają. Jednak, kiedy kasuję rekord MASTER,
kasowane są poprawnie wszystkie z DETAIL1. Rekordy z DETAIL2 kasowane są
jednak poprawnie jedynie dla pierwszego usuwanego rekordu z DETAIL1, dla
reszty pozostają w bazie. Czy ktoś może zetknął się z takim problemem i wie
z czego on wynika ?
Re: Kasowanie z tabel w relacji
Author: Marcin Wieczorek
Date: Fri, 23 Apr 1999 09:34
Date: Fri, 23 Apr 1999 09:34
9 lines
1035 bytes
1035 bytes
Radko <radko@uoo.univ.szczecin.pl> napisał(a): >Newsgroups: pl.comp.lang.delphi.bazy-danych,pl.comp.lang.delphi Jeśli już decydujecie się na wysyłanie do dwóch grup to dawajcie follow-up na jedną z nich. Z góry dziękuję. -- Marcin Wieczorek ( T-1000 ) wieczor@polbox.com DELPHI FAQ http://delphi.koti.com.pl
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads