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 :

Manipulation BDD checkbox.


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Points : 12
    Points
    12
    Par défaut Manipulation BDD checkbox.
    Bonjour, commencant mon stage en entreprise pour mon BTS et étant débutant en C# je requiert votre aide et vos lumières pour mon projet.

    Je reprend le programme d'un ancien de mon BTS qui consiste à manipuler une BDD de références produits. Cela consiste à rajouter une case "validée" pour un administrateur afin de valider une référence de la BDD.

    J'ai rajouter une table Validation avec une checkbox et il suffirais juste à l'administrateur de cocher la case pour que la référence soit validée.

    Voici le code lors du rajout d'une référence de type "cosse" :

    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
     
    private void pbAddCosse_Click(object sender, EventArgs e)
            {
                // test pour vérifier si des infos sont bien entrées
                if (((tbAddRefLeachCosse.Text) == "") || ((cbAddCossePinceElec.Text) == "") || ((cbCouleurFormeCosse.Text) == "") || (tbAddGaugeCableCosse.Text) == "")
                {
                    MessageBox.Show("Erreur: Vous devez indiquer une référence Leach, une pince, une gauge de fil admissible et une couleur/forme !",
                                    "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
     
                else
                {
                    // récupération des entrées dans la gb Contact
                    string RefLeach = (tbAddRefLeachCosse.Text).ToString(); string RefMil = (tbAddRefMilCosse.Text).ToString();
                    string PinceElectrique = (cbAddCossePinceElec.Text).ToString(); string MatriceAUtiliser = (cbAddCosseMatrice.Text).ToString();
                    string Remarques = (tbAddRemarquesCosse.Text).ToString(); string CouleurForme = (cbCouleurFormeCosse.Text).ToString();
                    string PinceManuelle = (cbAddCossePinceManu.Text).ToString(); string GaugeCable = (tbAddGaugeCableCosse.Text).ToString();
     
                    // message de validation
                    string message =   " Merci de vérifier les informations que vous avez entrées, \r\n \r\n Référence Leach : "
                                       + RefLeach + "\r\n Référence Mil : " + RefMil + "\r\n Gauge câble : " + GaugeCable + "\r\n Pince électrique : "
                                       + PinceElectrique + "\r\n Matrice associée : " + MatriceAUtiliser + "\r\n Pince manuelle : " + PinceManuelle + "\r\n Couleur & forme : " + CouleurForme +
                                       "\r\n Remarques : " + Remarques + "\r\n \r\n Cliquez sur OK pour valider ou sur Annuler pour revenir à la saisie.";
     
                    const string caption = "Ajout d'une nouvelle référence de cosse";
                    var result = MessageBox.Show(message, caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
     
                    if (result == DialogResult.OK)
                    {
                        // insertion dans la bdd
                        string Requete = "INSERT INTO Cosses (RefLeach, RefMil, CouleurForme, GaugeCable, PinceElecAssociee, MatriceAssociee, PinceManuelleAssociee, Remarques) VALUES ('"
                                         + RefLeach + "','" + RefMil + "','" + CouleurForme + "','" + GaugeCable + "','" + PinceElectrique + "','" + MatriceAUtiliser + "','" + PinceManuelle + "','" + Remarques + "')";
     
                        string info = this.req_db(Requete);
     
                        // sécurité en cas d'erreur avec la bdd
                        if (info != null)
                        {
                            MessageBox.Show(info + "\r\n \r\nEn cas de problème, merci de contacter le service informatique.", "Erreur base de données");
                        }
     
                        else
                        {
                            MessageBox.Show("La cosse " + RefLeach + "  a été ajoutée ! ", "Information");
                            this.loadApp();
                        }
                    }
                }
            }
    Ce que j'aimerais savoir exactement c'est comment faire pour rajouter la table de validation, j'ai ma petite idée mais, malgrés mes recherches, je ne sais pas comment manipuler ma table validation (qui n'est pas encore implémantée dans le code).

    J'espère avoir été assez clair et précis sur ma question sinon n'hésitez pas à poser des questions si vous avez besoin de plus d'informations.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Vich79 Voir le message
    Ce que j'aimerais savoir exactement c'est comment faire pour rajouter la table de validation, j'ai ma petite idée mais, malgrés mes recherches, je ne sais pas comment manipuler ma table validation (qui n'est pas encore implémantée dans le code).
    Si je comprends bien, tu veux savoir comment rajouter la table validation dans la base de données ?

    Si c'est le cas, il faudrait que tu nous montre ton MCD pour qu'on puisse déjà voir à quoi ça ressemble.

    Faut-il stocker d'autres informations au sujet de cette validation (qui a validé, quand...) ? Ou est-ce qu'une case à cocher suffit ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Si je comprends bien, tu veux savoir comment rajouter la table validation dans la base de données ?

    Si c'est le cas, il faudrait que tu nous montre ton MCD pour qu'on puisse déjà voir à quoi ça ressemble.

    Faut-il stocker d'autres informations au sujet de cette validation (qui a validé, quand...) ? Ou est-ce qu'une case à cocher suffit ?
    Merci de votre réponse rapide,

    J'ai créer la table validation comme sur la pièce jointe "base_cosse_validation.png"

    J'aimerais savoir comment l'exploiter afin qu'elle s'affiche lors de l'affichage de la base dans le programme qui se passe comme sur la pièce jointe " exemple_recherche_base_cosse_validation_non_faite.png"

    Bien sur, les références ici sont bidons et créée pour le developpement de l'application.

    Car malgrès le fait que la table s'affiche il n'y a pas les cases à cocher :/

    Encore une fois j'espère avoir été assez clair et précis.

    Merci d'avance.
    Images attachées Images attachées   

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Ok merci pour les précisions. Il faudrait que tu montres le code que tu utilises pour récupérer les infos de la table. Ainsi que la requête SELECT (si elle n'est pas déjà dans le code).

  5. #5
    Membre à l'essai
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Voilà la requête :

    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
                if (cbRchType.Text == "Cosse")
                {
                    if ((tbRchRefLeach.Text).ToString() != "")
                    {
                        RefLeach = "Cosses.RefLeach LIKE '%" + (tbRchRefLeach.Text) + "%' AND ";
                    }
     
                    if ((tbRchRefMil.Text).ToString() != "")
                    {
                        RefMil = "Cosses.RefMil LIKE '%" + (tbRchRefMil.Text) + "%' AND ";
                    }
     
                    req = " SELECT Cosses.*, Pinces.DocTechPince, Positionneurs.DocTechPos " + 
                          " FROM (Pinces INNER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee ) INNER JOIN Positionneurs ON (Positionneurs.RefPositionneur = Cosses.MatriceAssociee) AND (Pinces.RefPince = Positionneurs.PinceAssociee) " +
                          " WHERE " + RefLeach + RefMil + "Cosses.GaugeCable LIKE '%" + (tbRchGaugeCable.Text) + "%'";
     
                    // update du tableau et du nb de résultats
                    TypeRecherche = "Cosse"; update_dgvTable(dropTable(req));
                }
    Il faut aussi savoir que la requête fais partie d'une méthode de recherche pour afficher les différentes tables avec plusieurs options pour filtrer la recherche (j'estime que ce n'est pas nécessaire de vous montrer tout ça car y'a 3500 ligne de code en tout ^^').

    Toujours merci pour vos réponses rapides.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Quand tu as rajouté la colonne dans le DataGridView, as-tu bien spécifié comme type "DataGridViewCheckBoxColumn" ? As-tu également mis "Verification" dans la propriété DataPropertyName de la colonne ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Si j'ai bien compris ce fameux DataGridView permet de rajouter des colonnes à l'affichage, étant débutant c'est la première fois que j'en entend parlé. J'ai lu un peu de doc MSDN pour me renseigné et enfaite j'ai réjouté la collone sur Acces car la base est en Access (oui, désolé je ne l'ai pas dit avant >.<).

    Mais après avoir lu la doc MSDN je me dit que rajouter une colonne grace au DataGridView peut-être vraiment plus pratique.

    Edit : en y réfléchissant bien je ne sais pas c'est possible de rajouter une colonne pour valider les checkbox car il faut que cette colonne sois dynamique et lorsque l'ont change de recherche qu'elle affiche les bonnes checkbox cochée et non pas celle de la recherche d'avant. Je ne sais pas si c'est possible (même si rien n'est impossible en informatique :3)

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Access est juste la base de données. C'est totalement indépendant de ton application. La communication entre les deux s'effectue via les requêtes SQL. Donc ce n'est pas parce que tu rajoutes une colonne d'un côté qu'elle sera rajoutée de l'autre

    Là tu as bien rajouté ta colonne dans Access. Il ne manque plus qu'à configurer correctement ton DataGridView afin qu'il la prenne en compte.

    La requête va te remonter la colonne, puisque tu récupères toutes les colonnes de la table Cosses (via SELECT Cosses.*). Donc en principe, tu as juste à vérifier le paramétrage de le colonne dans le DataGridView avec les infos que je t'ai donné dans mon post précédent.

  9. #9
    Membre à l'essai
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Je vois. Merci beaucoup pour ton aide.

    J'ai juste une chose que je comprend pas pour le coup.

    Je m'explique, voici la méthode pour faire le pont entre la BDD access et le dataSet :

    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
        public System.Data.DataTable GetTable(string Requete)
        {
            try
            {
                System.Data.DataSet DtSet = new System.Data.DataSet();
                System.Data.OleDb.OleDbDataAdapter AdapTContact = new System.Data.OleDb.OleDbDataAdapter(Requete, Connection);
                AdapTContact.Fill(DtSet, ((char)0).ToString());
                return DtSet.Tables[0];
            }
     
            catch (Exception Err)
            {
                string info = Err.Message;
     
                if (info != null)
                {
                    MessageBox.Show(info + "\r\n \r\nEn cas de problème, merci de contacter le service informatique.", "Erreur base de données", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
     
                throw Err;
            }
        }
    La méthode qui prend les données et les renvoies :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            public System.Data.DataTable dropTable(string req)
            {
                // méthode qui droppe le résultat d'une requete et la renvoie à la méthode qui l'a appelée
                CBDD Bdd = new CBDD();
                Bdd.Open();
     
                System.Data.DataTable tReq = Bdd.GetTable(req);
                Bdd.Close();
                return tReq;
            }
    Et enfin dans le code que j'ai donné plus haut avec la requête et que je remet ici :

    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
                if (cbRchType.Text == "Cosse")
                {
                    if ((tbRchRefLeach.Text).ToString() != "")
                    {
                        RefLeach = "Cosses.RefLeach LIKE '%" + (tbRchRefLeach.Text) + "%' AND ";
                    }
     
                    if ((tbRchRefMil.Text).ToString() != "")
                    {
                        RefMil = "Cosses.RefMil LIKE '%" + (tbRchRefMil.Text) + "%' AND ";
                    }
     
                    req = " SELECT Cosses.*, Pinces.DocTechPince, Positionneurs.DocTechPos " + 
                          " FROM (Pinces INNER JOIN Cosses ON Pinces.RefPince = Cosses.PinceElecAssociee ) INNER JOIN Positionneurs ON (Positionneurs.RefPositionneur = Cosses.MatriceAssociee) AND (Pinces.RefPince = Positionneurs.PinceAssociee) " +
                          " WHERE " + RefLeach + RefMil + "Cosses.GaugeCable LIKE '%" + (tbRchGaugeCable.Text) + "%'";
     
                    // update du tableau et du nb de résultats
                    TypeRecherche = "Cosse"; update_dgvTable(dropTable(req));
                }
    Ici il appel les deux méthodes pour afficher dans le dvgTable les données mais ce que je ne comprend pas c'est où est-ce que je suis sencé définir le fait que la colonne "Verification" est une colonne de checkbox.

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Tu dois le faire dans Visual Studio, dans ton projet. Tu cliques sur le DataGridview, puis tu vas dans le panneau des propriétés. Et là tu vas pouvoir trouver les colonnes.

  11. #11
    Membre à l'essai
    Homme Profil pro
    C#
    Inscrit en
    Mai 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 33
    Points : 12
    Points
    12
    Par défaut
    Il semble qu'il n'y est pas de DataGridView de créée dans le programme donc je galère un peu là.

    J'ai un début de piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dgvTable.Columns["Verification"].ValueType =
    Pour définir le type de valeur dans la colonne.

    Edit : En fait après quelques recherches, mon prédécésseur à utilisé OLE DB pour gérer sa base de données, pourquoi ? J'en sais rien. Donc je lis encore et toujours des docs sur OLE DB.

Discussions similaires

  1. [MySQL] Projet de manipulation BDD
    Par genius2139 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 24/04/2012, 13h25
  2. manipuler des checkbox dans un gridview
    Par intissar_g dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/05/2007, 08h23
  3. Réponses: 1
    Dernier message: 26/06/2006, 11h33
  4. [MySQL] Précocher des checkbox en fonction de la BDD ?
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/03/2006, 09h22
  5. manipuler une bdd sql server en MFC ou excel ?
    Par roninou dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 18/10/2004, 11h51

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