Utilise l'intégrité référentielle entre tes deux tables et ajoute un
event on delete dans ta table lot de telle manière que le record
associé dans la table produit soit également effacer.
Personnellement, je me sert des triggers à l'insertion de nouveau record en association avec un generator.
Voici un exemple de code sql :
CREATE TABLE "SMS"
(
"ID" INTEGER NOT NULL,
"IDINCIDENT" INTEGER,
"IDAVIS" INTEGER,
"TEXTE_SMS" VARCHAR(1000),
"DATE_SMS" DATE,
"PAS_LU" "LOGICAL",
"EMETTEUR" SMALLINT,
"DESTINATAIRE" SMALLINT,
PRIMARY KEY ("ID")
);
SET TERM ^ ;
CREATE GENERATOR gen_sms;
SET GENERATOR gen_sms to
CREATE TRIGGER "ID_SMS" FOR "SMS"
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(gen_sms,1);
end
C'est une table que j'utilise pour que les utilisateurs de mon applicationn puisse s'envoyer des messages, comme un sms.
Avec un composant TIBDataset, tu écris le script SELECTSQL et puis tu
génères automatiquement le code de modif, refresh et effacement.
Voici ce que cela donne :
DELETESQL =
delete from SMS
where
ID = :OLD_ID
INSERTSQL =
insert into SMS
(CREATEUR_AVIS, CREATEUR_INCIDENT, DATE_SMS, ID, IDAVIS, IDINCIDENT,
PAS_LU, TEXTE_SMS)
values
(:CREATEUR_AVIS, :CREATEUR_INCIDENT, :DATE_SMS, :ID, :IDAVIS, :IDINCIDENT,
:PAS_LU, :TEXTE_SMS)
MODIFYSQL =
update SMS
set
CREATEUR_AVIS = :CREATEUR_AVIS,
CREATEUR_INCIDENT = :CREATEUR_INCIDENT,
DATE_SMS = :DATE_SMS,
ID = :ID,
IDAVIS = :IDAVIS,
IDINCIDENT = :IDINCIDENT,
PAS_LU = :PAS_LU,
TEXTE_SMS = :TEXTE_SMS
where
ID = :OLD_ID
Avec param.parabyname('ID') := le ID du record que je veux manipuler tu
signales ou TIBDATASET quel record doit être manipuler puis les
méthodes insert, edit et delete feront le reste pour toi.
J'espère avoir été clair n'hésite pas si tu veux plus d'explications.
Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.
Vincent Stryckmans
|