cs_apz
Messages postés281Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention11 avril 2013
-
22 sept. 2002 à 20:15
louiskolmer
Messages postés2Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention11 août 2003
-
11 août 2003 à 09:05
salut a tous,
j'ai 3 tables paradox : TK, TF, TN
reliées par la relations maitre-details (deux jointures ?)
la table maitre est TK
TF est TN sont les deux tables Détails reliées à la table maitre par le champs clé REF.
alors, en voulant ajouter à la table TF des champs a partir de TN, delphi declenche une erreur de 'Violation de clé'.
Tanto a la ligne de commande : DM.TF.Post;
Tanto à la ligne de commande : DM.TF.Append;
Voila le code:
procedure TForm1.Button1Click(Sender: TObject);
begin
Try
DM.TN.First;
While not DM.TN.Eof do
begin
DM.TF.Append;
DM.TF.FieldByName('REF' ).Asstring:=DM.TN.FieldByName('REF').AsString;
DM.TF.FieldByName('NUMERO').AsString:=DM.TN.FieldByName('NUM').AsString;
DM.TF.FieldByName('PAYS' ).AsString:=DM.TN.FieldByName('EMP').AsString;
DM.TF.Post;
DM.TN.Next;
end;
Finally
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 22 sept. 2002 à 20:28
Le message 'Violation de clef' signifie que tu essayes ajouter un enregitrement dont les valeurs des colonnes utilisées par l'index pricipale, existent déjà. Tous les enregistrements d'une table indexée doivent avoir des groupes de valeurs différentes pour les champs indexés.
Cette erreur n'est donc pas une erreur de programme en soit, il faut vérifier les valeurs saisies dans le nouvel enregistrement.
Je suppose que la première fois que l'erreur apparait c'est sur un Post, puis si tu essayes de nouveau c'est sur l'Append, n'est-ce pas ?
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 22 sept. 2002 à 21:33
Je vais te donner un exemple pour éclaicir :
Si une table contient les champs REF,NOM et PNOM. Les champs REF et NOM sont indexés par l'index primaire de la table.
Admettons que la table contiennent les valeurs suivantes :
REF NOM PNOM
1 TOTO Alain
1 TITI Pierre
2 TATA Zoé
Su tu ajoutes un enregistrement avec les valeurs
2 TUTU Sophie
Là pas de problème.
Su tu ajoutes un enregistrement avec les valeurs
1 TITI Antoine
Alors tu obtiens une violation de clef, car pour les champs indexés REF et NOM les valeurs 1-TITI existent déjà.
Dans cet exemple, le moyen le plus simple est d'ajouter le champ PNOM dans l'index primaire.