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 :

soucis avec dataset et .mdb


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut soucis avec dataset et .mdb
    Bonjour a tous et meilleurs voeux,

    Bon voici mon probleme, je charge un dataset avec certains elements des differentes tables de ma base mdb avec le code suivant:

    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
     
    private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (listBox2.Items.Count != 0)
                {
                    try
                    {
                        dataset1 = new DataSet();
                        OleDbConnection cn = new OleDbConnection(strAccessConn);
                        cn.Open();
                        // recuperation du ClientID
                        string ClientID = "";
                        string strSQLClient = "select ClientID from Client WHERE ClientName='" + listBox2.SelectedItem + "'";
                        OleDbCommand cmd1 = new OleDbCommand(strSQLClient, cn);
                        cmd1.Connection = cn;
                        ClientID = cmd1.ExecuteScalar().ToString();
                        // creation du dataset contenant les datatables avec le clientID selectionné
                        // creation des string SQL
                        string strSQLClientClientID = " select * from Client WHERE ClientID=" + ClientID ;
                        string strSQLContactClientID = " select * from Contact WHERE ClientID=" + ClientID ;
                        string strSQLInterventionClientID = " select * from Intervention WHERE ClientID=" + ClientID ;
                        // creation du dataadapter
                        OleDbDataAdapter da1 = new OleDbDataAdapter(strSQLClientClientID, cn);
                        OleDbDataAdapter da2 = new OleDbDataAdapter(strSQLContactClientID, cn);
                        OleDbDataAdapter da3 = new OleDbDataAdapter(strSQLInterventionClientID, cn);
                        // creation et remplissage du dataset
                        da1.Fill(dataset1, "Client");
                        da2.Fill(dataset1, "Contact");
                        da3.Fill(dataset1, "Intervention");
                        cn.Close();
                        // remplissage 
                        // Client
                        textBox1.Text = dataset1.Tables["Client"].Rows[0]["ClientName"].ToString();
                        textBox2.Text = dataset1.Tables["Client"].Rows[0]["ClientNumber"].ToString();
                        textBox3.Text = dataset1.Tables["Client"].Rows[0]["ClientAdress"].ToString();
                        // Information
                        richTextBox1.Text = dataset1.Tables["Client"].Rows[0]["ClientInfo"].ToString();
                        // Contact
                        comboBox2.SelectedText = dataset1.Tables["Contact"].Rows[0]["ContactSexe"].ToString(); // a modifier
                        textBox4.Text = dataset1.Tables["Contact"].Rows[0]["ContactTitre"].ToString();
                        textBox5.Text = dataset1.Tables["Contact"].Rows[0]["ContactPrenom"].ToString();
                        textBox6.Text = dataset1.Tables["Contact"].Rows[0]["ContactNom"].ToString();
                        textBox7.Text = dataset1.Tables["Contact"].Rows[0]["ContactTelephone"].ToString();
                        textBox8.Text = dataset1.Tables["Contact"].Rows[0]["ContactPoste"].ToString();
                        textBox9.Text = dataset1.Tables["Contact"].Rows[0]["ContactPortable"].ToString();
                        textBox10.Text = dataset1.Tables["Contact"].Rows[0]["ContactMail"].ToString();
                        richTextBox2.Text = dataset1.Tables["Contact"].Rows[0]["ContactInfo"].ToString();
                    }
                    catch
                    {
     
                    }
    ça fonctionne bien mais je bloque pour la mise a jour du dataset et de la base mdb quand j'ai fait des modif sur les différentes textbox....

    quelqu'un peux m'aider?

    merci

  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 : 44
    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
    Par défaut
    Déjà, plutôt que d'affecter explicitement les valeurs aux TextBox, utilise le data binding :

    Dans le designer :
    - pose 2 BindingSource sur ta Form (une pour Client et une pour Contact)
    - dans la propriété DataSource de ces BindingSource, sélectionne les tables associées
    - pour chacune des TextBox, va sur la propriété DataBindings (entre parenthèses au tout début de la liste), et fais le lien avec les BindingSources pour la propriété Text (SelectedText pour le ComboBox, ou peut-être SelectedItem, à voir...)

    Ensuite, dans le code :
    - après avoir chargé les tables, affecte le dataset à la propriété DataSource des BindingSource

    A partir de là, tes TextBox sont liées aux DataTable qui contiennent les données : elles prendront automatiquement les valeurs du DataSet, et si l'utilisateur les modifie, le DataSet sera mis à jour.

    Ensuite, pour mettre à jour la base de données, il faut réutiliser le OleDbDataAdapter. Crée l'adapter de la même façon, en spécifiant la commande Select, puis associe un CommandBuilder avec l'adapteur pour générer automatiquement les commandes Update/Insert/Delete. Enfin, appelle la méthode Update sur la table à mettre à jour :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        string strSQLClientClientID = " select * from Client WHERE ClientID=" + ClientID ;
                        OleDbDataAdapter da1 = new OleDbDataAdapter(strSQLClientClientID, cn);
                        OleDbCommandBuilder builder = new OleDbCommandBuilder(da1);
                        da1.Update(dataset.Tables["Client"]);
    Ca suppose bien sûr d'avoir gardé une référence à ton dataset... Le plus simple est de le garder dans un champ de ta Form (variable de classe). D'ailleurs tu peux faire pareil avec les adapters pour ne pas avoir à les recréer

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 362
    Par défaut
    salut

    désolé pour la reponse tardive....

    j'ai testé ta méthode et j'ai fait cela:

    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
     
    // creation des string SQL
                        string strSQLClientClientID = " select * from Client WHERE ClientID=" + ClientID;
                        string strSQLContactClientID = " select * from Contact WHERE ClientID=" + ClientID;
                        string strSQLInterventionClientID = " select * from Intervention WHERE ClientID=" + ClientID;
                        // creation des dataadapters
                        OleDbDataAdapter da1 = new OleDbDataAdapter(strSQLClientClientID, cn);
                        OleDbDataAdapter da2 = new OleDbDataAdapter(strSQLContactClientID, cn);
                        OleDbDataAdapter da3 = new OleDbDataAdapter(strSQLInterventionClientID, cn);
                        // creation et remplissage du dataset
                        dataset1 = new DataSet();
                        dataset1.Clear();   
                        da1.Fill(dataset1, "Client");
                        da2.Fill(dataset1, "Contact");
                        da3.Fill(dataset1, "Intervention");
                        cn.Close();
                        // Databinding
                        this.DBClientbindingSource.DataSource = dataset1;
                        // Remplissage Client
                        this.DBClientbindingSource.DataMember = "Client";
                        textBox1.DataBindings.Add(new Binding("Text", DBClientbindingSource, "ClientName", true));
                        textBox2.DataBindings.Add(new Binding("Text", DBClientbindingSource, "ClientNumber", true));
                        textBox3.DataBindings.Add(new Binding("Text", DBClientbindingSource, "ClientAdress", true));
                        richTextBox1.RichTextBox.DataBindings.Add(new Binding("Text", DBClientbindingSource, "ClientInfo", true));
    ca fonctionne bien, par contre mon dataset1 contient plusieurs datatable et dans le bout de code ci dessus, j'ai fait le databinding sur la datatable "Client".
    Comment dois-je faire pour continuer le databinding sur les deux autres datatable "Contact" et "Intervention" et les lier à d'autre textbox et autre?

    J'ai essayé de redefinir le "DataMember" de mon "DBClientbindingsource" mais sans effet....

Discussions similaires

  1. Remplir dataset avec un fichier mdb en resources
    Par czy-robicz dans le forum VB.NET
    Réponses: 1
    Dernier message: 16/06/2009, 11h18
  2. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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