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

Windows Forms Discussion :

DataGridView et commandes SQL.


Sujet :

Windows Forms

  1. #1
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut DataGridView et commandes SQL.
    Bonjour à tous.

    Voici mon problème, j'ai un DGV rempli par une DataTable d'un DataSet relié à un DB Access.
    Je voudrais que lorsque l'utilisateur saisisse un nom de fiche dans une TextBox à côté de mon DGV et qu'il clique sur un bouton de validation, si le nom de la fiche est équivalent à un nom de fiche dans ma DataTable, mon DGV affiche la ligne correspondante.
    Je ne sais pas comment m'y prendre, j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void button1_Click(object sender, EventArgs e)
    {
       SqlCommand getNomFiche = new SqlCommand("Select NomFiche From Fiche where NomFiche = " + textBox1.Text);
       ficheTableAdapter.Fill(getNomFiche);
    }
    mais ça ne marche pas...

    Merci d'avance.

    EDIT : nan mais méga débile, Fill sert à remplir les DataTable :/
    Donc je m'y prenais pas comme il faut d'entrée, bref comme qu'on fait ? xD

  2. #2
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Bon on oublie ma fâcheuse première connerie xD
    Voici où j'en suis :
    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
    public System.Data.OleDb.OleDbConnection Connection;
    public void fctConnectDB()
    {
       Connection = new OleDbConnection();
       Connection.ConnectionString = "Provider=microsoft.jet.oledb.4.0;Data Source=NoticePoste_be.mdb";
       Connection.Open();
    }
     
    public void fctDisconnectDB()
    {
       Connection.Close();
       Connection.Dispose();
       Connection = null; ;
    }
     
    private void button1_Click(object sender, EventArgs e)
    {
       fctConnectDB();
       OleDbCommand getNomFiche = new OleDbCommand("Select NomFiche from Fiche where NomFiche = " + textBox1.Text);
       OleDbDataAdapter ficheDataAdapter = new OleDbDataAdapter(getNomFiche);
       ficheDataAdapter.Fill(this.dataSet1.Fiche);
       fctDisconnectDB();
    }
    Problème lors du click sur le bouton, une exception est gérée :
    InvalidOperationException : Fill : la propriété SelectCommand.Connection n'a pas été initialisée.
    A quoi cela est-t-il du ?
    Merci.

  3. #3
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    la, comme ca, je dirais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getNomFiche.Connection = Connection
    parce que nulle part tu n'affectes la connection a ta commande

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  4. #4
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Citation Envoyé par pvialatte
    parce que nulle part tu n'affectes la connection a ta commande
    Effectivement c'était bien ça, je ne savais pas qu'il fallait affecter la commande à la connexion ^^
    Merci.

    Par contre, maintenant j'ai une autre exception sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ficheDataAdapter.Fill(this.dataSet1.Fiche);
    OleDB Exception : Erreur de syntaxe (opérateur absent) dans l'expression 'NomFiche = Hypochlorite de sodium'.
    "Hypochlorite de sodium" est le texte tapé dans ma TextBox.
    "Opérateur absent"... Je vois pas trop là :S

    Merci d'avance.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Par défaut
    Salut,
    Met plutot un NomFiche like 'XXXX' a la place de =

  6. #6
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Ca ne change rien, il me sort a même exception qu'avec le =...
    Sauf qu'à la place du = y'a un like lol

    Merci quand même ^^

    Quelqu'un d'autre aurait une solution ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Par défaut
    Tu peux me faire voir toute la requete stp?
    C'est quoi le type de ton champ NomFiche?
    Ca parait bizarre..

  8. #8
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    et les guillemets, c'est pour qui ?

    Si tu veux rester avec ce format de requete (maaal), tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...("Select NomFiche from Fiche where NomFiche = '" + textBox1.Text + "'")
    Sinon, regarde du cote des requetes parametrees, comme ici:
    http://johannblais.developpez.com/tu...acces-donnees/

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  9. #9
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Citation Envoyé par skunkies
    Tu peux me faire voir toute la requete stp?
    Regarde mon deuxième post dans ce topic y'a mon code complet ^^
    Citation Envoyé par skunkies
    C'est quoi le type de ton champ NomFiche?
    DB Access, type de champ : texte.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Par défaut
    C'est ce que j'ai mit dans mon precedent post un like 'XXX' sinon il prends ca comme une valeur

  11. #11
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Citation Envoyé par pvialatte
    et les guillemets, c'est pour qui ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...("Select NomFiche from Fiche where NomFiche = '" + textBox1.Text + "'")
    Ouais ça a effectivement réglé mon problème d'exception, mais c'est bizarre parce que j'avais essayé de le faire avant de poster l'erreur et ça ne marchait pas

    Strange ^^

    Merci.

    Bon du coup j'me heurte à un autre problème (encore !).
    J'aimerais qu'une fois que j'ai cliqué sue le bouton, mon DGV n'affiche que la ligne de la table où le nom de fiche correspond au nom de fiche tapé, mais quand je clique sur le bouton, le DGV est vide...
    J'ai fait quelques petites modifications du code dans l'événement Click du Button, voici le 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
     
                // Met la DataSource du DataGridView à null.
                dgv_nom_doc.DataSource = null;
                // Création d'une DataTable.
                DataTable dt_fiche = new DataTable();
     
                string nomFiche = textBox1.Text;
                fctConnectDB();
                OleDbCommand getNomFiche = new OleDbCommand("Select * from Fiche where NomFiche like '" + nomFiche + "'");
                getNomFiche.Connection = ConnectionDB;
                OleDbDataAdapter ficheDataAdapter = new OleDbDataAdapter(getNomFiche);
                ficheDataAdapter.Fill(dt_fiche);
                fctDisconnectDB();
     
                // Création d'un BindingSource.
                BindingSource bs_fiche = new BindingSource();
                bs_fiche.DataMember = "dt_fiche";
                bs_fiche.DataSource = this.dataSet1;
                // On affecte le nouveau BindingSource à la DataSource du DataGridView.
                dgv_nom_doc.DataSource = bs_fiche;
    Pourquoi qu'il est vide le DataGridView ?

    Merci d'avance.

    EDIT :
    Citation Envoyé par skunkies Voir le message
    C'est ce que j'ai mit dans mon precedent post un like 'XXX' sinon il prends ca comme une valeur
    Oui pardon dans le code de mon deuxième post c'est un "=" mais j'ai mis un "like" et ça n'a rien changé

    Bref ce problème ci est résolu merci bien ^^

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Par défaut
    j'ai fait ce type de focntion mais pas exactement de la meme maniere que toi, je te montre ce que j'ai fait cela peut t'aider.

    sur le click du bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    bindingSource1.DataSource = dataTable;//.TableName[0];
    string sClauseWhere = "Raison_Sociale like '*AMA*' AND Nom_Archi1 like '*AAM*'";
    bindingSource1.Filter = sClauseWhere;
    dgvResult.DataSource = bindingSource1;
    je gere la connection a ma db ailleurs.

    En espérant que cela t'aide.

  13. #13
    Membre confirmé Avatar de Roach-
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Par défaut
    Voici un exemple complet pour filtrer.

    Prit sur msdn :
    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
     
    private void InitializeSortedFilteredBindingSource()
    {
        // Create the connection string, data adapter and data table.
        SqlConnection connectionString =
             new SqlConnection("Initial Catalog=Northwind;" +
             "Data Source=localhost;Integrated Security=SSPI;");
        SqlDataAdapter customersTableAdapter =
            new SqlDataAdapter("Select * from Customers", connectionString);
        DataTable customerTable = new DataTable();
     
        // Fill the the adapter with the contents of the customer table.
        customersTableAdapter.Fill(customerTable);
     
        // Set data source for BindingSource1.
        BindingSource1.DataSource = customerTable;
     
        // Filter the items to show contacts who are owners.
        BindingSource1.Filter = "ContactTitle='Owner'";
     
        // Sort the items on the company name in descending order.
        BindingSource1.Sort = "Country DESC, Address ASC";
     
        // Set the data source for dataGridView1 to BindingSource1.
        dataGridView1.DataSource = BindingSource1;
     
    }

  14. #14
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Ah ouais ça m'a bien aidé !
    J'suis débile parce que je créais une DataTable qui n'était pas dans le DataSet alors forcément ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bs_fiche.DataMember = "dt_fiche";
    bs_fiche.DataSource = this.dataSet1;
    étaient fausses !

    skunkies quand j'ai vu ton bout de code ça m'a flashé xD

    Merci à tous ça marche niquel maintenant !

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Par défaut
    j'etais pas loin de MSDN !!

    Edit :e je veux bien le lien MSDN stp.

  16. #16
    Membre confirmé Avatar de Roach-
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135

  17. #17
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Hum c'est pratique ça...

    Merci !

  18. #18
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Je reouvre la discution car j'ai une autre question.

    J'aimerais que lorsque l'user ajoute une ligne au DataGridView (avec des données bien sur), cette ligne soit ajoutée à ma DB (DB Access je rappelle ^^).

    Je ne sais pas sur quel évènement me placer... RowsAdded ?

    Merci d'avance.

  19. #19
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Personne ?

  20. #20
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Bon ben du coup j'ai fait autrement.

    Merci quand même.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. execution de 2 commandes sql simulanément
    Par manikou dans le forum MFC
    Réponses: 4
    Dernier message: 03/05/2005, 15h10
  2. Commande SQL / connaître taille d'1 base
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/04/2005, 11h38
  3. [JDBC] Commande SQL récalcitrante
    Par Dahu dans le forum JDBC
    Réponses: 7
    Dernier message: 05/04/2005, 16h03
  4. commande SQL truncate table xxx
    Par Yogy dans le forum SQL
    Réponses: 1
    Dernier message: 07/10/2004, 14h57
  5. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59

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