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 :

Condition variable pour une recherche [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Points : 12
    Points
    12
    Par défaut Condition variable pour une recherche
    Bonjours tous le monde,

    Je créé une petite appli en C# avec une BDD access. J'ai créé un datagridview qui affiche une liste de toutes mes ventes de la table vente.
    Ce que j'aimerais faire c'est y ajouter une recherche. Par exemple afficher que les ventes entre tel et tel date. Jusque là pas de soucis. Mais lorsque je veux cumuler mes recherches ça se complique: Je veux faire ma recherche toujours avec un intervalle de date mais aussi avec une référence. Le but final est de faire une recherche avec tous les critères. La méthode ci-dessous est appelée à chaque fois que l'utilisateur sélectionne un critère dans une des combobox de recherche. J'ai mis des [] dans mon if où je suis bloqué. J'ai pensé à ==!null même si c'est pas exactement ce que je recherche mais Visual me met une erreur.


    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
    public void MaJDgvAccueil()
     {
     
                DataTable DT = new DataTable();
                DataRow DR;
                object[] rowArray = new object[6];
     
                DT.Columns.Add(new DataColumn("RÉF"));
                DT.Columns.Add(new DataColumn("DATE"));
                DT.Columns.Add(new DataColumn("QUANTITÉ"));
                DT.Columns.Add(new DataColumn("PRIX ACHAT"));
                DT.Columns.Add(new DataColumn("PRIX VENTE"));
                DT.Columns.Add(new DataColumn("MARGE"));
     
                Vente UneVente;
     
                for (int i = 0; i < CollectionVente.Count; i++)
                {
                   UneVente = CollectionVente[i];
     
                   if (UneVente.GetDateV() >= DateDeb && UneVente.GetDateV() <= DateFin && UneVente.GetRefV() == [valeur variable selon une valeur choisi dans une combobox et si rien n'a été choisi, alors l'égalité est forcément vrai])
                   {
     
                       rowArray[0] = UneVente.GetRefV();
                       rowArray[1] = UneVente.GetDateV().ToShortDateString();
                       rowArray[2] = UneVente.GetQuantiteV();
                       rowArray[3] = Math.Round(UneVente.GetPrixAchatV(), 2) + " €";
                       rowArray[4] = Math.Round(UneVente.GetPrixVenteV(), 2) + " €";
                       rowArray[5] = Math.Round(UneVente.GetPrixVenteV() - UneVente.GetPrixAchatV(), 2) + " €";
     
                       DR = DT.NewRow();
                       DR.ItemArray = rowArray;
                       DT.Rows.Add(DR);
     
                   }    
                }
                DataView DV = new DataView(DT);
                DgvA.DataSource = DV;
    }
    Merci d'avoir eu le courage de tout lire!
    Et merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Homme Profil pro
    BTS SIO
    Inscrit en
    Janvier 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : BTS SIO
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 8
    Points : 12
    Points
    12
    Par défaut Résolu!
    J'ai trouvé une autre méthode permettant de faire une recherche multiple à l'aide d'une requête SQL. Je met le code pour ceux que ça pourrait intéresser:

    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
     
                     string ReqRecherche = "SELECT REFERENCEVENTE, DATEVENTE FROM VENTE WHERE DATEVENTE >=#" + DtDeb.Value.Month + "/" +
                     DtDeb.Value.Day + "/" + DtDeb.Value.Year + "# AND DATEVENTE <=#" + DtFin.Value.Month +
                     "/" + DtFin.Value.Day + "/" + DtFin.Value.Year + "# AND";
                   if (CbxRefRech.SelectedIndex != -1)
                   {
                       ReqRecherche = ReqRecherche + " REFERENCEVENTE ='" + CbxRefRech.Text + "' AND";
                   }
                   if (CbxFormatRech.SelectedIndex != -1)
                   {
                       ReqRecherche = ReqRecherche + " TYPEVENTE= '" + CbxFormatRech.Text + "' AND";
                   }
                   if (CbxThemeRech.SelectedIndex != -1)
                   {
                       ReqRecherche = ReqRecherche + " TYPETHEME= '" + CbxThemeRech.Text + "' AND";
                   }
                   if (CbxMERech.SelectedIndex != -1)
                   {
                       ReqRecherche = ReqRecherche + " TYPEENVOI= '" + CbxMERech.Text + "' AND";
                   }
                   if (CbxMPRech.SelectedIndex != -1)
                   {
                       ReqRecherche = ReqRecherche + " TYPEPAIEMENT= '" + CbxMPRech.Text + "' AND";
                   }
                   ReqRecherche = ReqRecherche + " IDVENTE IS NOT NULL";

  3. #3
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Bonjour,

    Tu peux aussi passer par une liste entre ta vue et tes données : une liste d'objet (contenant tes différentes propriétés). Ainsi tu n'aurais qu'a ajouter ta liste au DataSource de ta DataGridView.

    Ensuite pour filtrer tu pourrais utiliser Linq sur ta liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaListe.Where(v => v.Date > DateDebut.DateTime && v.Date < DateFin.DateTime)

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/09/2013, 18h20
  2. 2 conditions pour une recherche
    Par laurentSc dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/09/2011, 16h31
  3. [XL-2010] Macro ou Formule pour une recherche verticale avec condition
    Par Orsaylg dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/09/2010, 13h22
  4. [MySQL] Construction de la condition pour une recherche multicritères
    Par jmtrivia dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/05/2009, 11h30
  5. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38

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