Impossibilité de cocher l'intégrité référentielle entre 2 tables

Fermé
parroquet Messages postés 2 Date d'inscription mercredi 12 juin 2013 Statut Membre Dernière intervention 14 juin 2013 - 12 juin 2013 à 22:36
blux Messages postés 26507 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 décembre 2024 - 16 juil. 2013 à 09:02
Je voudrais lier 2 tables: la première est la table "clients", la seconde la table "commandes".

La clé primaire de "clients" est la colonne "code clients" en texte avec ce format : 06-01-001 par exemple.

La clé primaire de "commande" est un "numéro auto" attribué à chaque commande. Une colonne "code clients" est présente aussi, avec un menu déroulant faisant appel à "code clients" de la table "clients" (donc à priori pas de code non présent dans la table "clients").

Lorsque je tente de créer la relation entre les 2 tables par "code clients", il m'est impossible d'appliquer l'intégrité référentielle (un à plusieurs). Le message d'erreur me signale que les données de la table "commande" ne respectent pas les règles d'intégrité référentielle...
J'ai vraiment vérifier chaque colonne côte à côte et pas un "code clients" sous "commande" qu'il n'y a pas dans "clients" (grâce au menu déroulant) et l'inverse est même vrai... Franchement je câle depuis des semaines... Quelqu'un pourrait il m'aider ?
A voir également:

7 réponses

Bonjour,
Pour vérifier que ton intégrité référentielle est vraiment respectée, tu peux essayer de demander à une requête de te sortir les Clients pour lesquels il n'y a pas de commandes en indiquant comme critère de sélection "null" pour le champ "Commandes!Clients", sans demander l'intégrité évidemment. Tu verras si tu n'as pas des surprises.
Tu peux aussi faire une requête inverse ("Commandes " vers "Clients") avec le même critère mais "Null"sur le champs "Clients!CodeClient". Tu verras bien ce se passe.
Enfin, pourquoi pas un N°Auto comme clé-Client, ce serait bien plus sûr qu'un CodeClient traficoté-perso.
Bonne suite
0
Merci de ton attention Tessel75, je suis admiratif... La requête des non correspondance me donne la liste de tous mes clients soit 229 unité!!! J'ai le sentiment que c'est mon "code client" traficoté qui pose problème mais je n'arrive pas a comprendre pourquoi !!! Ce numéro est unique pour chaque client dans la table "Clients". Bien entendu, je le retrouve à plusieurs reprises dans mes "commandes", serais ce le problème?
0
parroquet Messages postés 2 Date d'inscription mercredi 12 juin 2013 Statut Membre Dernière intervention 14 juin 2013
14 juin 2013 à 11:40
Merci Tessel,

alors, j'ai créer la requête avec la table "Clients" et les champs "code clients" et "nom" puis avec la table "Commande" et le champ "date de commande".
1- propriétés de la jointure (1): rien ne s'affiche.
2- propriétés de la jointure (2): tous les codes clients et leurs nom s'affichent. Rien à "date de commande".
3- propriétés de la jointure (3): les "date de commandes" uniquement.

maintenant avec le critere "null":
1- "null" sur un des 3 champs: plus aucun affichage.
2- "null" sur "code clients" ou "nom": plus aucun affichage.
3- "null" sur "date de commande": plus aucun affichage.

La clé primaire crée perso n'est pas un numéro auto car je suis certains qu'un code sera unique, exemple: 13-08-003
13:année de première commande
08:mois de prem's com
003: troisième nouveau clients du jour...

pas de confusion possible, ce clients gardera son code à la prochaine commande.
0
blux Messages postés 26507 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 décembre 2024 3 317
14 juin 2013 à 13:16
Salut,

pour moi, le problème est qu'une ligne de la table 'commandes' n'a pas un 'code client' que l'on peut retrouver dans la table 'clients'.
Essaye de lancer une requête de 'non-correspondance' avec l'assistant afin de voir si c'est le cas.
0
Bonjour Blux! Bonjour Parroquet
En fait, sans employer le nom, c'est bien des requêtes de non-correspondance que j'avais demandé de tester, car elles suivent les écritures que j'avais indiquées, mais je me suis sans doute mal expliqué parce que ce n'est pas ce que Parroquet a fait.
En fait l'écriture-type des requêtes de non-correspondance est la suivante:

SELECT Banques.IndexBanque, Banques.Banque FROM Banques LEFT JOIN CompteBque ON Banques.[IndexBanque] = CompteBque.[BanqueIndexCB] WHERE (((CompteBque.BanqueIndexCB) Is Null));

Cette requête vérifie que tous les comptes bancaires sont rattachés à une banque répertoriées. Elle ne ramène rien.
0

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

Posez votre question
Bon effectivement, j'ai un gros bug car la requête de non-correspondance entre "clients" et "commandes" me liste tous mes codes clients! pourtant quand j'ai inséré mes commandes, je recherche le code client par un menu déroulant faisant appel a la table "Clients"...bon le format ne doit pas être bien reconnu... Qu'en pensez vous?
0
Bonjour,
S'il en est ainsi, il ne te reste qu'à vérifier la compatibilité des formats des codes dans les 2 tables.
Cela étant dit, je ne peux que te conseiller de ré-examiner ta position quant aux clés par N°Auto et les codes-clients bricolés-perso avant qu'il ne soit trop tard et que tu aies beaucoup avancé dans la construction de ta base. Les 2 types de codes ne sont pas incompatibles à la condition de se rappeler qu'il faut savoir distinguer le codage système qui peut rester masqué mais avec lequel ton projet fonctionne, et le code perso qui peut être visible, mais de la même façon que les identités civiles des clients.
Bonne suite et bon courage.
0
TOUFIKINFO34 Messages postés 8 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 16 juillet 2013
16 juil. 2013 à 08:14
essayer de reformuler votre question
0
blux Messages postés 26507 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 4 décembre 2024 3 317
16 juil. 2013 à 09:02
Pourquoi ?
Le problème est pourtant clair.
0