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

C# Discussion :

Problème Data Relation [Débutant]


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Points : 37
    Points
    37
    Par défaut Problème Data Relation
    Bonjour,

    J'éssaye de faire fonctionner sur mon ordinateur l'exemple de microsoft:
    Creation d'un Formulaire Maitre/detail avec bd Northwind.

    Tout se passe bien:
    J'accede à la bd
    Je remplis le dataset
    Mais je bloque au niveau de L'instruction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataRelation relation = new DataRelation("CustomersOrders",data.Tables["Customers"].Columns["CustomerID"],data.Tables["Orders"].Columns["CustomerID"]);
                data.Relations.Add(relation);

    J'ai le message suivant:
    L'argument 'column' ne peut pas être null.
    J'ai beau chercher mais j'ai rien trouvé.

    Quelqu'un pourrait me dire pourquoi.

    Merci

    Voici Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.SqlServerCe;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Configuration;
    using System.Configuration.Assemblies;
    using System.Text.RegularExpressions;
    using System.Data.SqlTypes;
    using System.Runtime.InteropServices;
     
     
     
    public class Form1 : System.Windows.Forms.Form
    {
        private DataGridView masterDataGridView = new DataGridView();
        private BindingSource masterBindingSource = new BindingSource();
        private DataGridView detailsDataGridView = new DataGridView();
        private BindingSource detailsBindingSource = new BindingSource();
     
        public static void Main()
        {
            Application.Run(new Form1());
        }
     
     
     
     
        // Initializes the form.
        public Form1()
        {
            masterDataGridView.Dock = DockStyle.Fill;
            detailsDataGridView.Dock = DockStyle.Fill;
     
            SplitContainer splitContainer1 = new SplitContainer();
            splitContainer1.Dock = DockStyle.Fill;
            splitContainer1.Orientation = Orientation.Horizontal;
            splitContainer1.Panel1.Controls.Add(masterDataGridView);
            splitContainer1.Panel2.Controls.Add(detailsDataGridView);
     
            this.Controls.Add(splitContainer1);
            this.Load += new System.EventHandler(Form1_Load);
            this.Text = "DataGridView master/detail demo";
        }
        private void GetData()
        {
            try
        {
     
            string connectionString = ConfigurationManager.ConnectionStrings[1].ConnectionString;
            MessageBox.Show("conn=" + connectionString);
     
            SqlCeConnection connection = new SqlCeConnection(connectionString);
     
             connection.Open();
     
             // Create a DataSet.
                DataSet data = new DataSet();
                data.Locale = System.Globalization.CultureInfo.InvariantCulture;
     
             // Add data from the Customers table to the DataSet.
                SqlCeDataAdapter  masterDataAdapter = new SqlCeDataAdapter ("select * from Customers", connectionString);
                masterDataAdapter.Fill(data, "Customers");
     
             // Add data from the Orders table to the DataSet.
                SqlCeDataAdapter detailsDataAdapter = new SqlCeDataAdapter("select * from Orders", connectionString);
                detailsDataAdapter.Fill(data, "Orders");
     
     
                MessageBox.Show("cdst=" + data.Tables["Customers"].Rows[0][0]);
                MessageBox.Show("cdst=" + data.Tables["Customers"].Rows[0][1]);
     
                MessageBox.Show("cdst=" + data.Tables["Orders"].Rows[0][0]);
                MessageBox.Show("cdst=" + data.Tables["Orders"].Rows[0][1]);
     
     
             // Establish a relationship between the two tables.
                DataRelation relation = new DataRelation("CustomersOrders",data.Tables["Customers"].Columns["CustomerID"],data.Tables["Orders"].Columns["CustomerID"]);
                data.Relations.Add(relation);
     
             // Bind the master data connector to the Customers table.
                masterBindingSource.DataSource = data;
                masterBindingSource.DataMember = "Customers";
     
             // Bind the details data connector to the master data connector,
             // using the DataRelation name to filter the information in the 
             // details table based on the current row in the master table. 
                detailsBindingSource.DataSource = masterBindingSource;
                detailsBindingSource.DataMember = "CustomersOrders";
                connection.Dispose();
                detailsBindingSource.DataMember = "CustomersOrders";
        }
            catch (SqlCeException)
            {
                MessageBox.Show("To run this example, replace the value of the " +
                    "connectionString variable with a connection string that is " +
                    "valid for your system.");
            }
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Bind the DataGridView controls to the BindingSource
            // components and load the data from the database.
            masterDataGridView.DataSource = masterBindingSource;
            detailsDataGridView.DataSource = detailsBindingSource;
            GetData();
     
            // Resize the master DataGridView columns to fit the newly loaded data.
            masterDataGridView.AutoResizeColumns();
     
            // Configure the details DataGridView so that its columns automatically
            // adjust their widths when the data changes.
            detailsDataGridView.AutoSizeColumnsMode =
                DataGridViewAutoSizeColumnsMode.AllCells;
        }
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    A priori, l'une des colonnes que tu as indiquées pour la relation n'existe pas... vérifie qu'il n'y a pas une faute de frappe dans le nom de la colonne

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Vous avez raison:
    Customer ID au lieu de CustomerID

    J'ai fait un copy/coller de l'exemple de Microsoft:
    Procédure pas à pas : création d'un formulaire maître/détail qui utilise deux contrôles DataGridView Windows Forms
    je n'ai pas douté qu'il y avait une faute de frappe a ce niveau.

    Enfin, Merci beaucoup

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

Discussions similaires

  1. Problème de relation double
    Par Rub-n dans le forum Access
    Réponses: 1
    Dernier message: 31/05/2006, 18h07
  2. Problème de relation entre deux tables + autre chose
    Par Goth_sensei dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/03/2006, 20h49
  3. problème data["..."] dans value=
    Par vincedjs dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2006, 16h50
  4. [conception] Requête de sélection problèmes de relations
    Par snoopy69 dans le forum Modélisation
    Réponses: 26
    Dernier message: 08/11/2005, 14h23
  5. Gestion club sportif (problème de relations )
    Par jemaflo dans le forum Access
    Réponses: 3
    Dernier message: 03/10/2005, 23h00

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