SQL ... DELPHI... INTERBASE.. IBX

cmeme Messages postés 12 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 15 décembre 2005 - 15 déc. 2005 à 22:48
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 19 déc. 2005 à 18:39
Salut


Voila j'ai deux tables la 1ere TABLE AUTEUR et la 2ème TABLE ECRIRE.
j'ai deux clefs primaire dans AUTEUR qui sont NOM_AUTEUR et
PRENOM_AUTEUR et dans la TABLE ECRIRE ce sont des clefs externe
(NOM_AUTEUR et PRENOM_AUTEUR) ce que j'aimerai savoir faire c'est
lorsque je modifie mes champs NOM_AUTEUR et PRENOM_AUTEUR dans la
Gestion Auteur que celle ci change NOM_AUTEUR et PRENOM_AUTEUR dans la
Gestion Ecrire également. J'ai deja un code pour modifier NOM_AUTEUR et
PRENOM_AUTEUR dans la gestion Auteur elle fonctionne mais elle modifie
pas les champs NOM_AUTEUR et PRENOM_AUTEUR dans la Gestion Ecrire.


Code:, ----
var
OldType,OldType1,OldType2,OldType3 :string; // Déclaration de variable
OldType4,OldType5 :string;

procedure TGes_Auteur.Modifier_AuteurClick(Sender: TObject);
beginif (edit1.Text '')or (edit2.Text '')or (edit3.Text = '')or (edit4.Text='') then
begin
messagedlg('Veuillez sélectionner le champs à supprimer', mtWarning,[mbok],0);
end
else
with DataModule2.IBQuery_Auteur do
begin // Ici on modifie les champs sélectionner
SQL.Clear;

SQL.Add('Update AUTEUR set NOM_AUTEUR=:Nom_Auteur,
PRENOM_AUTEUR=:Prenom_Auteur, PSEUDONYME=:Pseudonyme,
NATIONALITE=:Nationalite');SQL.Add('WHERE NOM_AUTEUR :OldType and PRENOM_AUTEUR :OldType1 and PSEUDONYME = :OldType2 and
NATIONALITE=:OldType3 ');
DataModule2.IBQuery_Auteur.ParamByName('Nom_Auteur').AsString:=edit1.text;
DataModule2.IBQuery_Auteur.ParamByName('OldType').AsString:=OldType;
DataModule2.IBQuery_Auteur.ParamByName('Prenom_Auteur').AsString:=edit2.text;
DataModule2.IBQuery_Auteur.ParamByName('OldType1').AsString:=OldType1;
DataModule2.IBQuery_Auteur.ParamByName('Pseudonyme').AsString:=edit3.text;
DataModule2.IBQuery_Auteur.ParamByName('OldType2').AsString:=OldType2;
DataModule2.IBQuery_Auteur.ParamByName('Nationalite').AsString:=edit4.text;
DataModule2.IBQuery_Auteur.ParamByName('OldType3').AsString:=OldType3;
ExecSQL;
end;
with DataModule2.IBQuery_Ecrire do
begin
SQL.Clear;
SQL.Add('Update ECRIRE set NOM_AUTEUR=:Nom_Auteur, PRENOM_AUTEUR=:Prenom_Auteur');SQL.Add('WHERE NOM_AUTEUR :OldType4 and PRENOM_AUTEUR :OldType5 ');
DataModule2.IBQuery_Ecrire.ParamByName('Nom_Auteur').AsString:=Ges_Auteur.edit1.text;
DataModule2.IBQuery_Ecrire.ParamByName('OldType4').AsString:=OldType4;

DataModule2.IBQuery_Ecrire.ParamByName('Prenom_Auteur').AsString:=Ges_Auteur.edit2.text;

DataModule2.IBQuery_Ecrire.ParamByName('OldType5').AsString:=OldType5;
ExecSQL;
end;
Refresh_Auteur.Click; //Bouton qui rafraichi la table AUTEUR
edit1.Text:='';
edit2.text:='';
edit3.Text:='';
Ajouter_Auteur.Enabled:=true;
Modifier_Auteur.Enabled :=false;
Supprimer_Auteur.Enabled :=false;
Ges_Ecrire.Refresh_Ecrire.click;
end;



P.S: La requête fonctionne mais elle modifie pas les champs NOM_AUTEUR et PRENOM_AUTEUR dans la Gestion Ecrire

1 réponse

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
19 déc. 2005 à 18:39
salut

je ne connais pas specialement INTERBASE, mais n'y a-t-il pas un equivalent de l'option CASCADE, qui, quand tu modifieune clef primaire dans une table, modifie les clef etrangere de toutes les tables adjacentes (idem pour les delete...)
0
Rejoignez-nous