none
Datagridview: inserer des données de 2 tables RRS feed

  • Question

  • Bonjour,

    J'ai 2 tables: 1 pour les clients avec un id_CLIENT et un NOM

                        1 autre pour les achats avec un ID_ACHAT et un id_CLIENT

    Comment puis-je faire pour afficher dans un dataGridView tous les achats ainsi que le nom du client?

    Exemple: j'ai deux clients DUPONT et DURAND

    j'ai 4 achats donc 2 faits par DUPONT et 2 faits par DURAND

    Je voudrai avoir l'affichage:

    Achat1 | DUPONT

    Achat2 | DURAND

    Achat3 | DURAND

    Achat4 | DUPONT

    Merci.

    lundi 30 janvier 2012 15:59

Réponses

  • Bonjour,

    Le plus simple dans votre cas est de créer une nouvelle DataTable dans un DataSet qui contient deux colonnes : "Achat" et "Client".

    Ensuite, alimenter votre DataTable via la requête suivante :

    SELECT * FROM Client INNER JOIN Achat ON (Client.id_CLIENT = Achat.id_Client).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    lundi 30 janvier 2012 16:38
    Modérateur
  • Bonjour,

     

    Si vous avez suivi la procédure précédente, Visual Studio a du vous créer un dataset branché à votre base.

    Pour mieux voir les possibilité qu'un dataset peut offrir, je vous conseille de jeter un coup d’oil sur la documentation MSDN.

    http://msdn.microsoft.com/fr-fr/library/04y282hb(v=vs.100).aspx

    http://msdn.microsoft.com/fr-fr/library/system.data.dataset.aspx#Y0

     

    Si jamais, vous peinez à implémenter votre fonctionnalité, vous pouvez nous poster votre code avec votre fichier base (un zip par exemple), on ne manquera pas

    de vous faire l'implémentation. Car ce que vous cherchez à faire est beaucoup plus facile à implémentez que expliquer dans un  forum et surtout une fois que vous aurez l'implémentation vous pouvez vous en inspirer pour faire d'autre opérations.

     

    Cordialement.

    mardi 31 janvier 2012 19:11
    Auteur de réponse

Toutes les réponses

  • Bonjour,

    Le plus simple dans votre cas est de créer une nouvelle DataTable dans un DataSet qui contient deux colonnes : "Achat" et "Client".

    Ensuite, alimenter votre DataTable via la requête suivante :

    SELECT * FROM Client INNER JOIN Achat ON (Client.id_CLIENT = Achat.id_Client).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    lundi 30 janvier 2012 16:38
    Modérateur
  • Merci, mais comment je fais pour remplir cette nouvelle table?

    Jusqu'à présent, je me servais des dataAdapter pour créer des requêtes.

    Or, quand je crée cette nouvelle table dans mon dataset, je ne peux pas lui ajouter de requêtes (seulement des colonnes et des relations).

    lundi 30 janvier 2012 17:26
  • Bonjour,

    Une autre solution qui pourrait aussi vous aider consisterait en utiliser un objet SqlDataSource :

    1. Ajouter un objet SqldataSource, soit  SqldataSource1, à votre page aspx (vous pouvez le faire via le designer)  http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource(v=vs.80).aspx
    2. Assigner sa propriété SelectCommand à " SELECT   Achat .ID_ACHAT,  Client .Nom  FROM Client INNER JOIN Achat ON (Client.id_CLIENT = Achat.id_Client)" (Vous pouvez faire la configuration via le designer) .
    3. Assigner la propriété DataSourceID de votre data grid à  SqldataSource (vous pouvez aussi le faire via le designer).

    Ce pattern pourra aussi vous permettre la prise en charge des autres opération (Insert, Update, Delete).

     

    Cordialement.

    lundi 30 janvier 2012 17:39
    Auteur de réponse
  • J'utilise "Visual studio 2010 c# express" avec "sql server compact edition".

    Et j'ai un projet WinForms.

    Je n'ai aucun contrôle "SqlDatasource" disponible dans la boîte à outils....

    Cdlt.

    lundi 30 janvier 2012 18:16
  • Autan pour moi, j'étais parti sur l'idée d'une application ASP .NET, mais le principe reste le même.
    Suivez la procédure suivante :
    1. Placer vous sur la pagne de design de votre Form, puis placer vous sur votre DataGridView
    2. Dans la fenêtre properties, placer vous sur la propriété DataSource.
    3. Dans la liste déroulante cliquer sur "Add Project Data Source ..." 
    4. Comme indiquer faite le choix "DataBase" puis cliquer sur Next.
    5. Puis faite le choix "DataSet" puis cliquer sur Next.
    6. Dans la nouvelle page, cliquer sur le bouton "New Connexion .."
    7. Choisissez "Microsoft SQL server Compact" comme type de connexion :
    8. Il suffit e suite de faire un browsing vers votre fichier de base.
    9. Puis laisser vous guider

     

    Cordialement.


    lundi 30 janvier 2012 21:17
    Auteur de réponse
  • Merci mais comment faire pour insérer une table qui n'existe pas dans ma base mais qui doit être composée de champs de 2 tables existantes dans ma base, qui sont lièes par un champ (ID_CLIENT) ?
    mardi 31 janvier 2012 07:28
  • Bonjour,

     

    Si vous avez suivi la procédure précédente, Visual Studio a du vous créer un dataset branché à votre base.

    Pour mieux voir les possibilité qu'un dataset peut offrir, je vous conseille de jeter un coup d’oil sur la documentation MSDN.

    http://msdn.microsoft.com/fr-fr/library/04y282hb(v=vs.100).aspx

    http://msdn.microsoft.com/fr-fr/library/system.data.dataset.aspx#Y0

     

    Si jamais, vous peinez à implémenter votre fonctionnalité, vous pouvez nous poster votre code avec votre fichier base (un zip par exemple), on ne manquera pas

    de vous faire l'implémentation. Car ce que vous cherchez à faire est beaucoup plus facile à implémentez que expliquer dans un  forum et surtout une fois que vous aurez l'implémentation vous pouvez vous en inspirer pour faire d'autre opérations.

     

    Cordialement.

    mardi 31 janvier 2012 19:11
    Auteur de réponse
  • Bonjour, Bobinou65,

     

    Est-ce que vous avez pu avancer en utilisant les informations reçues ? Merci de tenir la communauté informée sur la suite de vos démarches.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    • Marqué comme réponse bobinou65 jeudi 2 février 2012 08:09
    • Non marqué comme réponse Ciprian Duduiala jeudi 2 février 2012 08:14
    jeudi 2 février 2012 07:52
  • Désolée du retard, mais je n'ai pas pu y travailler.

    Je pense que ces réponses vont m'aider donc je marque comme Réponse.

    Merci.

    jeudi 2 février 2012 08:09