Utiliser un champ de type « Calculé » dans le système de relation.

Anonyme
2021-07-07T09:14:04+00:00

Bonjour à tous ,

J´aimerais pouvoir lier 2 tables en utilisant un champs calculé mais un message d´erreur s´affiche : les champs de type « Calculé » ne peuvent pas être utilisé dans le système de relation.

Un UDIcode est composé de 32 caractères dont 13 constituent le EAN code
Exemple : Si le UDIcode est (01)04009706425106(21)1912101234 le EANcode est 4009706425106

Voici mes 2 tables :
1)Table UDI_code
Champs 1 UDIcode_id (clé primaire)
Champs 2 UDIcode
Champs 3 EANcode -> ce EAN code est un champs calculé qui extrait une partie du UDI code avec la formule Mid([UDI_code];6;13) comme dans l´exemple

2)Table EAN_code
Champs 1 EANcode (clé primaire)
Champs 2 Couleur
Champs 3 Taille

Lorsque je veux créer une relation entre le champs EAN_code de la table UDI_code et le champs de la clé primaire de ma table EAN_code, un problème survient car le champ EAN_code de la table UDI_code est un champ calculé.

Avez vous une idée pour m´aider ?

Si vous avez une piste ca sauverait mon stage !!

Merci d´avance

Microsoft 365 et Office | Access | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

9 réponses

  1. Anonyme
    2021-07-07T12:28:57+00:00

    En fait oui il y a toujours un 0 devant le EANcode 13 donc on peut le voir comme un EAN14 peut être ? Pas sure de comprendre le problème que vous me soulignez ?
    Merci

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-07-07T12:27:18+00:00

    En fait mon problème est que l´entreprise dans laquelle je réalise ma BDD ACCESS avait précedemment des code EAN sur ses produits. Ce mois ci elle passe à des UDI code pour identifier plus précisemment ses produits (en effet les UDI code contiennent non seulement le code EAN, mais aussi d´autres infos telles que la date et le numéro de série).

    Comme j´ai deja une base qui recense la taille, le nom de l´article et sa couleur en fonction du EAN code, j´aurais voulu le lier directement.

    J´ai un peu du mal à voir ce que vous me proposez de faire lorsque vous indiquez "peupler à travers votre formulaire en utilisant les évènements du formulaire ou associés au champs UDIcode."
    Pouvez vous développer s´il vous plait ?

    Merci pour votre aide

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2021-07-07T12:12:51+00:00

    À propos, cela n'a rien à voir mais tu as un souci dans la logique de ton application (désolé de polluer le forum, mais je ne sais pas envoyer des messages perso).

    Le dernier caractère d'un code EAN est une clé de contrôle. Cette clé dépend de tous les chiffres antérieurs.

    Pour un code EAN-14 (comme celui des IA01), si le code commence par 0, la clé sera la même que le code EAN-13 correspondant. Donc tu peux faire l'opération MID que tu fais.

    Mais si le premier chiffre est autre chose qu'un 0, la clé du code code EAN-14 sera différente de celle de l'EAN-13. Et l'extraction que tu fais ne sera plus correcte.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2021-07-07T11:57:25+00:00

    Vous avez la réponse dans le message d'erreur, il ne faut pas utiliser les champs calculés.

    En réalité, comme vous le constatez, il faut éviter les nouvelles fonctionnalitées, champs calculés, mvf, attachement, ... Tous les nouveautés vous causeront, un jour, des problèmes.

    Dans votre cas, vous devriez faire un champs standard dans votre table et la peupler à travers votre formulaire en utilisant les évènements du formulaire ou associés au champs UDIcode.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2021-07-07T10:27:12+00:00

    Bonjour,

    Normalement ce que l'on fait est d'enregistrer la valeur calculée comme un champ à part dans la base de données. Comme cela la valeur EAN est disponible pour le moteur de base de données et il pourra par la suite réaliser la liaison (avec un champ calculé, sous-entendu au dernier moment, ce n'est pas possible).

    Le problème c'est de mettre à jour automatiquement ce champ. Et là cela dépend du moteur de base de données utilisé (par exemple les vrais serveurs SQL utilisent des déclencheurs, triggers où on code ce genre de chose).

    Je dois avouer que je n'ai jamais fait cela avec le moteur Access. D'après une question StackOverflow qui renvoit sur une page Microsoft, il y a une fonctionnalité pour ce faire depuis Access 2010.

    Si tu y arrives, cela devrait te faire des points en plus d'expliquer cela dans le rapport :-)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire