Violation d'accés

cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013 - 22 sept. 2002 à 20:15
louiskolmer Messages postés 2 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 11 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

DM.TF.Open;
DM.TN.Open;
DM.TN.MasterFields:='';
DM.TF.MasterFields:='';
DM.TN.DisableControls;
DM.TF.DisableControls;

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

DM.TN.EnableControls;
DM.TF.EnableControls;
end;
end;

Quelle est la solution.

Merci

5 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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 ?

--- :sleepy) Nono du Moulin :sleepy) ---
0
cs_apz Messages postés 281 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 11 avril 2013
22 sept. 2002 à 20:53
salut,

j'ai pas bien saisie ton explication ?

citation:
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 ?

oui effectivement ca se produise sur les deux lignes de commande.

Merci
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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.

--- :sleepy) Nono du Moulin :sleepy) ---
0
louiskolmer Messages postés 2 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 11 août 2003
11 août 2003 à 09:03
jack
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
louiskolmer Messages postés 2 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 11 août 2003
11 août 2003 à 09:05
jack
0
Rejoignez-nous