IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Erreur d'intégrité avec un fichier de relation [WD20]


Sujet :

WinDev

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut Erreur d'intégrité avec un fichier de relation
    Bonjour à tous,

    Voilà mon problème :

    J'ai 2 tables liées par un fichier de relation créé automatiquement par WinDev avec la gestion de l'intégrité activé.
    Voici l'apperçu :

    Nom : fichierrelation.png
Affichages : 1451
Taille : 16,0 Ko

    donc si je comprend bien, un compte peut avoir plusieurs produit, et un produit peut avoir plusieurs compte (c'est le but...)

    Un formulaire saisit les données dans le fichier TCompte.
    Le fichier TProduit est déjà rempli.
    Dans ce formulaire je choisis plusieurs produits.


    Lorsque je veux valider pour ajouter les infos, il me met l'erreur suivante :

    Que s'est-il passé ?
    Erreur d'intégrité.
    Les cardinalités côté clé étrangère (1,1) entre les rubriques <TProduit.IDTProduit> et <TProduit_TCompte.IDTProduit> ne sont pas respectées.
    Je comprends bien que cela vient de mes relations,
    Je comprends également que le fichier de relation est vide.

    Pourtant je fais bien attention à saisir les infos d'abord dans le fichier TCompte et après dans le fichier de relation.

    Si je désactive le contrôle de l'intégrité tout est ok pas de soucis, les fichiers sont bien remplis.
    Mais du coup il je peux saisir dans le fichier de relation des données qui ne correspondent pas (exemple : un IDTproduit inexistant dans TProduit !!!)

    Mais alors comment remplir ce fichier de relation en gardant le contrôle de l'intégrité ???

    J'ai cherché sur le forum de WinDev sans résultat, y a pas grand chose sur les fichiers de relation...

    Est ce que quelqu'un peut m'expliquer comment ces fichiers de relation fonctionne ??



    Merci pour votre aide,

    bien cordialement,

    JJacques68

  2. #2
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Pourtant je fais bien attention à saisir les infos d'abord dans le fichier TCompte et après dans le fichier de relation.
    D'après le schéma relationnel, tu as définis les cardinalités

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TProduit_TCompte 1,1   ----- 1,n T_compte
    Pour chaque enregistrement dans T_compte tu as au minimum 1 enregistrement dans TProduit_TCompte
    Pour chaque enregistrement dans TProduit_TCompte tu as un et un seul enregistrement dans T_Compte

    Lorsque tu ajoute dans la table T_compte, la BDD regarde si il y a un enregistrement dans la table TProduit_Tcompte avec la clé désignée
    Il ne trouve pas car tu effectues l'ajout dans table cette juste après.

    Modifies la relation 1,n en 0,n. Car selon l'échelle de temps, tu ajouteras avant dans la table t_compte que dans la table relation

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  3. #3
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    Bonsoir,

    Merci pour votre réponse.

    Si je change la cardinalité, je vais avoir un risque sur l'intégrité des donnees nan ?
    J'avais fait des essais...

    Est ce que ma logique est bonne : ce sont les cardinalité qui font l'intégrité des donnees ?

    Et si je ne change pas la cardinalité, et que je remplis la table de relation avant la table TCompte, ça peut marcher ?
    (Je ne peu malheureusement pas tester ce soir...)

    Merci !!

  4. #4
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    "Les cardinalités, au sens arithmétique du terme, permettent de dénombrer les éléments de l'entité d'arrivée en relation avec un élément de l'entité de départ, et vice versa."
    source Blog de SqlPro

    Dans une base de données l'intégrité correspond à trois aspect :
    1. Précision ;
    2. Exactitude ;
    3. Validité.



    Et si je ne change pas la cardinalité, et que je remplis la table de relation avant la table TCompte, ça peut marcher ?
    non car les cardinalités 1,1 indiquent qu'il y a un et un seul et pas 0.
    En ajoutant la table relation avant la table T_compte, tu trouveras dans le cas ou un enregistrement de la relation n'a pas de correspondance dans la table T_Compte


    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  5. #5
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    bonjour,

    Voici mes nouvelles cardinalités :

    Nom : fichierrelation2.png
Affichages : 1223
Taille : 13,9 Ko

    Comme cela ça fonctionne bien.

    J'ai lu le lien que vous m'avez envoyé. - merci !!

    C'est claire et bien expliqué. J'ai bien compris leur exemple de cardianalité.

    Mais j'avoue ne pas arriver à comprendre les cardinalités qui s'appliquent dans mon cas (ci-dessus).

    en fait je crois que j'arrive pas à me les "traduire" en "français",
    comme dans votre exemple : "un humain habite dans 1 appartement minimum et 1 maximum" ou encore : "un appart possède 0 humain au mini et n humains au maxi"...


    merci !

  6. #6
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Bonjour

    Merci DSR57 d'avoir pris le temps pour une réponse précise.

    @jjacques68 :
    Dans votre cas la partie 1,n de la relation entre TProduit_TCompte et TCompte va être vérifiée à chaque écriture de part et d'autre de la relation.
    La création d'un compte implique, selon ces cardinalités, qu'il y a obligatoirement au moins un TProduit_TCompte... ce qui ne semble être le cas.

    Votre difficulté vient du fait que la création d'un fichier de relation démultiplie les conditions de cardinalité. Initialement vous aviez deux paires de cardinalités entre les entités normales. Maintenant vous en avez 4.
    Cela rends l'interprétation plus complexe. une seule méthode : reprendre leur interprétation liaison par liaison et dans chaque sens possible.
    C'est alors que vous serez en mesure de comprendre le au moins /au plus impliqué par l'écriture respective dans chaque fichier de la relation étudiée.

    Ces contrôles permettent de modéliser pour le système informatique toutes les relations possibles entre les abstractions de la réalité que sont les entités du MCD. Ces "Au moins / Au plus" sont la meilleure traduction en langage humain... même si cela conduit à des effets de style peu communs.

    Essayez de remplacez le '0' par 'Aucun' et le 'n' par 'plusieurs'. Cela pourrait vous aider dans un premier temps.

  7. #7
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 469
    Points : 121
    Points
    121
    Par défaut
    Bonsoir,

    Désolé pour ma réponse tardive...

    En effet,
    En décomposant chaque relation c'est plus clair...

    Et je n'ai plus de probleme d'intégrité comme j'avais sité plus haut...

    Je vous remercie pour votre aide ! Vos explications m'ont bien aidées !

    A bientôt !!

    Jjacques68

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur E/S 105 lors d'ecriture avec un fichier text
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2009, 11h29
  2. Erreur envoi mail avec phpmailer (fichier joint)
    Par rhadien dans le forum Langage
    Réponses: 1
    Dernier message: 02/07/2008, 10h23
  3. Erreur requête avec liaison fichier HyperFile
    Par nicolasT29 dans le forum HyperFileSQL
    Réponses: 24
    Dernier message: 19/06/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo