none
WPF - ADO.NET : Initialisation clé parent erronée ?

    Discussion générale

  • Après beaucoup de recherches et d'essais non concluants dans le règlement d'un problème d'insertion dans une relation Maître/Détails basée sur deux objets DataGrid, je me tourne vers la communauté pour j'espère trouver une solution.

    Le contexte est celui-ci :

    Après insertion d'un enregistrement Client au travers d'un contrôle DataGrid "Maître", puis consolidation dans la source de données et numérotation, je tente de saisir un enregistrement Commande sur la dernière ligne vide du contrôle DataGrid "Détails".
    Le problème est que la ligne détaille n'est pas initialisée avec le numéro de l'enregistrement Client mais avec un numéro auto généré à partir de la colonne clé auto incrémentée de l'objet DataTable "Maître".

    Nom : wpf1.jpg
Affichages : 17
Taille : 29,4 Ko

    Par contre, si je ferme et je relance l'application avant de saisir l'enregistrement Commande, le comportement est correct.

    Nom : wpf2.jpg
Affichages : 12
Taille : 27,8 Ko

    Je ne sais pas comment régler ce problème.
    Merci de votre assistance
    .

    lundi 12 juin 2017 18:24

Toutes les réponses

  • Bonsoir,

    Pouvez-vous partager votre code?

    Ceci  permettra aux membres de la communauté (y compris moi) de mieux analyser votre problématique et de vous fournir une solution plus précise?

    Merci d'avance


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    lundi 12 juin 2017 20:36
  • Merci pour votre réponse.

    Il m'apparait difficile de copier coller tout le code ici considérant le nombre de facteurs qui peuvent être liés à ce problème (Dataset typé, sources et cibles de liaison, etc.).

    Je vous propose un lien de téléchargement du projet DBWpf (VS 2015) qui m'a servi à reproduire le contexte : https://drive.google.com/file/d/0B64EJCynJGIzWmtSSEZJQTYxb2M/view?usp=sharing

    La source de données Test.mdb se trouve dans le répertoire Debug du projet.

    Dites-moi si cela vous convient ou bien s'il est nécessaire que les échanges se fassent ici.

    Merci d'avance pour votre aide

    • Modifié rbmoman mardi 11 juillet 2017 23:19
    lundi 12 juin 2017 21:12
  • Bonjour,

    J'ai testé votre application et je n'ai pas d'erreurs (du moins celle mentionnée dans ce post).

    Vous me confirmez que le scénario est bien:

    • Créer un nouveau client
    • Saisir une nouvelle commande et s'assurer que le client ID apparaisse bien lors de la saisie

    Si c'est bien celui-ci, j'ai testé à plusieurs reprises et tout fonctionne bien sans avoir à redémarrer l'application.

    Pouvez-vous également me préciser quelle méthode est concernée sur votre code?


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;



    mardi 13 juin 2017 10:24
  • Bonjour Nourdine,

    Le problème intervient après avoir au préalable créer un nouveau client puis enregistrer ce client dans la source de données avec le bouton "Disquette".

    Ensuite, au moment où l'on commence à saisir la première commande sur la ligne vide de l'objet DataGrid "Détails", la valeur de la colonne Client_ID (clé étrangère pointant sur la clé primaire du parent) est initialisée avec une valeur qui ne correspond pas à l'ID du client courant (clé primaire du parent).

    Cette initialisation est réalisée automatiquement par le Framework à partir de la définition de la relation entre les deux objets DataTable dans le Dataset. A mon sens, le problème ne provient pas des instructions codées dans les méthodes écrites dans le code behind.

    Dans ce cas précis, le comportement n'est pas ce qui est attendu.

    Merci pour votre assistance


    • Modifié rbmoman mercredi 12 juillet 2017 00:37
    mardi 13 juin 2017 12:26