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

ADO.NET Discussion :

filtrer les résultats d'une requête SQL


Sujet :

ADO.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut filtrer les résultats d'une requête SQL
    je travaille en ado.net , sql ,j'ai un combo box qui contient les date : 2009, 2010 , 2011 ,2012
    est je veux que quand je clique sur 2009 il me donne que les année 2009 que j'ai dans ma base de donnée voila requete que j'ai faites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void comboBox2_SelectedValueChanged(object sender, EventArgs e) 
    { 
     
    x.Tables.Clear(); 
    // x.Tables[0].Clear(); 
    // StyleDtg(); 
    SqlConnection con = new SqlConnection("......"); 
    SqlDataAdapter adap = new SqlDataAdapter(); 
    adap.SelectCommand = new SqlCommand("select *from Date where n_inventaire='" +comboBox2.Text + "'", Program.con); 
     
    adap.Fill(x); 
    dataGridView1.DataSource = x.Tables[0]; 
    }
    je veux qu'il prend que les année (2009,2010)

    Merci pour votre aide

  2. #2
    Membre habitué Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Points : 159
    Points
    159
    Par défaut
    Je pense que la solution a votre problème réside uniquement dans le "SELECT....".
    Est-ce que vous pouvez me donner le nom de la colonne qui contient les dates dans la table "Date", le format de cette colonne, et quelques-un des enregistrement qu'elle contient ?

    J'ai tout de mêm du mal a bien comprendre ce que vous voulez :

    Citation Envoyé par Abbeille Voir le message
    je veux que quand je clique sur 2009 il me donne que les année 2009 que j'ai dans ma base de donnée
    C'est soit "l'année 2009", soit "les années 2009, 20xx, 20xx..."

    Citation Envoyé par Abbeille Voir le message
    je veux qu'il prend que les année (2009,2010)
    Qui est "il" ? Il donne ou il prend ?

    Ce serait sympathique de nous aider à vous aider...

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    J'abonde dans le sens de Cygne-> ce n'est pas très clair tout cela.

    J'en profite pour pointer du doigt plusieurs erreur dans votre requête:
    Le SELECT * est à bannir... il ne permet pas l'utilisation d'un index couvrant (ou à quel prix...) et il est rare que vous deviez utiliser toutes les colonnes de votre table...

    De plus ne créez pas vos requêtes dynamiquement: passez par les SqlParameter, cela vous protège des attaque par injection SQL.

    Je pense que votre colonne où se trouve les années est n_inventaire c'est cela?

    Si c'est le cas votre requête est bonne même si les '' sont inutiles autour de votre date (a moins que votre colonne ne soit pas typée en tant qu'entier en base ce qui n'est pas bien )
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Si vous voulez avoir les années supérieures à celle choisies (2009,2010 etc.)
    changez le égal de votre requête par >=
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponse et merci de vouloir m'aider !
    voila 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
    private void comboBox2_SelectedValueChanged(object sender, EventArgs e) 
    { 
     
    x.Tables.Clear(); 
    // x.Tables[0].Clear(); 
    // StyleDtg(); 
    SqlConnection con = new SqlConnection("......"); 
    SqlDataAdapter adap = new SqlDataAdapter(); 
    adap.SelectCommand = new SqlCommand("select *from table 1 where date1 ='" +comboBox2.Text + "'", Program.con); 
     
    adap.Fill(x); 
    dataGridView1.DataSource = x.Tables[0]; 
    }
    comme je vous ai dis , le combo box contient que les année (2009 , 2010,2011)je veux que quand j'appui sur 2009 , je veux que ma requete me filtre que les date de 2009 , (*/*/2009), j'ai pas su le format convenable ! Merci pour tout !

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SqlConnection con = new SqlConnection("......");
                SqlDataAdapter adap = new SqlDataAdapter();
                adap.SelectCommand = new SqlCommand("SELECT * FROM table 1 WHERE date1 =@annee", Program.con);
                adap.SelectCommand.Parameters.Add(new SqlParameter("@annee",Convert.ToInt32(Combo2.Text)));
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  7. #7
    Membre régulier
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SqlConnection con = new SqlConnection("......");
                SqlDataAdapter adap = new SqlDataAdapter();
                adap.SelectCommand = new SqlCommand("SELECT * FROM table 1 WHERE date1 =@annee", Program.con);
                adap.SelectCommand.Parameters.Add(new SqlParameter("@annee",Convert.ToInt32(Combo2.Text)));
    Je pense plutôt qu'il voulais dire que dans sa base de données la date est stockée sous le format dd/mm/yyyy donc si tu veux trier juste par année il faudrait plutôt utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SqlConnection con = new SqlConnection("......");
                SqlDataAdapter adap = new SqlDataAdapter();
                adap.SelectCommand = new SqlCommand("SELECT * FROM table 1 WHERE date1 LIKE @annee", Program.con);
                adap.SelectCommand.Parameters.Add(new SqlParameter("@annee",'%'+Combo2.Text+'%'));

  8. #8
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    con = new SqlConnection("......");
    SqlDataAdapter adap = new SqlDataAdapter();
    adap.SelectCommand = new SqlCommand("SELECT * FROM table 1 WHERE date1 LIKE @annee", Program.con);
    adap.SelectCommand.Parameters.Add(new SqlParameter("@annee",'%'+Combo2.Text+'%'));
    Mon dieu si c'est le cas il ne faut pas utiliser le LIKE!

    SQL SERVER gère bien les dates et propose des fonctions pour le manipuler!

    Comment vos dates sont t'elles stockées en base? en datetime? en varchar?
    Si c'est en DATETIME :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE YEAR(date1)=@annee
    Si c'est en VARCHAR c'est une hérésie et vous devez passer par un CAST dabord...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  9. #9
    Membre régulier
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Mon dieu si c'est le cas il ne faut pas utiliser le LIKE!

    SQL SERVER gère bien les dates et propose des fonctions pour le manipuler!
    au moins j'ai aussi appris une nouvelle chose comme ça

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/07/2009, 14h26
  2. Comment formater les résultats d'une requête sql
    Par hjulius dans le forum PL/SQL
    Réponses: 1
    Dernier message: 28/07/2009, 17h23
  3. Exploiter les résultats d'une requête SQL
    Par grinder59 dans le forum C#
    Réponses: 2
    Dernier message: 29/01/2009, 11h36
  4. Selectionner les résultats d'une requête sql
    Par Seb981 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 11/09/2007, 13h57
  5. Réponses: 5
    Dernier message: 20/03/2007, 17h55

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