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 :

[VB.net] Filtrer un datagridview par un DatetimePicker


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut [VB.net] Filtrer un datagridview par un DatetimePicker
    Hello !

    Il me semble que plus c'est simple, moins je trouve d'infos dans l'aide vb ou sur le net !!

    Là j'ai un datagridview et un datetime picker, et j'aimerais simplement que lorsque je sélectionne une date, mon datagridview ne m'affiche que les données correspondantes à cette date (en lisant dans la colonne date du datagrid)...

    puis aussi ajouter des filtres avec des données saisies dans un textbox par exemple...

    c'est un truc con, mais je trouve pas les fonctions ! (j'suis un newb faut aussi dire...)

    quelqu'un peut me helper ?

  2. #2
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Si ton datagridview est lié à un bindingsource tu trouveras ton boheur là

    http://msdn2.microsoft.com/fr-fr/library/ya3sah92.aspx
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    mmmh... merci, je vais voir !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 109
    Points
    109
    Par défaut
    Salut, j'ai déjà fait ça avec un datagridview alimenté par un datatable.
    SI c'est le cas pour toi, utilise la propriété defaultview.rowfilter du datatable, ça marche impec.
    En fait tu mets une string du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((datatable)MyDatagridView.DataSource).defaultview.rowfilter = "champ_date_db >= '" + tavaleurdébut + '" AND champ_date_db <= '" + tavaleurfin + "'"
    A toi d'adapter tes valeurs selon le format dans ta datatable.
    ADSC Informatique : Assistance & Dépannage Informatique sur Toulouse et région (www.adscinformatique.fr)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    ok, euh... j'avoue avoir laissé ce prob de côté pour l'instant, j'suis dans une autre partie de l'applic' que je suis très content de résolvé en ce moment...

    mais je sens que j'ai des soucis avec les notions de datatable et etc...vous pouvez m'en dire plus ?

    ce que je sais (ou crois savoir...) :

    j'ai une base de données sur un serveur SQL, j'ai fait des liaisons, tables associatives, etc...elle s'appelle "gpi"
    dans Visual studio, j'ai lié ma db "gpi", cela a créé un dataset qui s'appelle "GpiDataSet"...
    maintenant, quand je mets un datagridview ou un combobox dans un formulaire et que je le lie avec une table ou une colonne d'une table, ça me rajoute un BindingSource et un DataAdapter...

    mais la datatable ?...c'est quoi dans tout ça

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    ouais c'est bon niveau du vocabulaire, les datatable, etc...

    j'essaie ta fonction maintenant...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    DataGridView1.DataSource.defaultview.rowfilter = "date_activite = DateTimePicker1.Value"

    ça marche pas, mais c'est pas en erreur... je chauffe mais... chais pas

    vous voyez quelque chose qui cloche là ??

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    je parle tout seul mais c'est pas grave...

    ça, ça fonctionne :

    ActivitesBindingSource.Filter = "date_activite = '21.09.2006'"

    mais c'est légèrement trop statique à mon goût... je veux pouvoir dire que c'est égal à la valeur de mon DateTimePicker ou d'un TextBox... purée...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    'jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView1.DataSource.defaultview.rowfilter = "date_activite = '"& DateTimePicker1.Value & "'"
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut


    j'ai juste du corrigé et j'ai mis dans le sub du DateTimePicker :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActivitesBindingSource.Filter = "date_activite = '" & DateTimePicker1.Value & "'"
    Mais ça marche... y me manquait pas grand chose, juste la synthaxe.... rahhaa.... merci merci merci...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    j'avais pas testé quelque chose et un problème a surgi !!!....j'deviens badingue ......

    j'ai ce code, il me sert à trier mon dataset par date et par n° personnel...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActivitesBindingSource.Filter = "id_num_pers_elsa = '" & TextBox2.Text & "'"
    ActivitesBindingSource.Filter = "date_activite = '" & DateTimePicker1.Value & "'"
    Mais après longues recherches et 6000 tests, je me suis rendu compte que la 2e ligne écrasait la première !!... c'est pas terrible quand un utilisateur voit les activités des autres mélangées aux siennes.......

    alors j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActivitesBindingSource.Filter = "date_activite = '" & DateTimePicker1.Value & "'" And "id_num_pers_elsa = '" & TextBox2.Text & "'"
    le prob ? c'est que ça me sort une erreur :

    La conversion de la chaîne "date_activite = '01.01.2006'" en type 'Long' n'est pas valide.
    et si j'inverse les filtres et que je mets d'abord par N° pers...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActivitesBindingSource.Filter = "id_num_pers_elsa = '" & TextBox2.Text & "'" And "date_activite = '" & DateTimePicker1.Value & "'"
    ça donne :

    La conversion de la chaîne "id_num_pers_elsa = '3183'" en type 'Long' n'est pas valide.
    donc j'en ai conclu que pour trier, à cause du AND, il doit stocker le 1er filtre dans une nouvelle variable avant de traiter le 2e filtre, mais qu'il se fous dedans....

    ou un truc du genre... j'sature là.....grave...

    est-ce qu'on doit forcer la variable ??......

    ...pis en fait après y a d'autres événement, comme le changement de la date que je dois gérer dans un nouveau sub... mais si on arrive à faire ce filtre double, je pense que tout est réglé !

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActivitesBindingSource.Filter = "date_activite = '" & DateTimePicker1.Value & "' AND id_num_pers_elsa = '" & TextBox2.Text & "'"
    Par contre tu devrais faire gaffe a la valeur de ton TextBox2 car je ne pense pas que ce format de date soit reconnu par ton moteur SQL : '01.01.2006'
    Tu devrais faire une fonction qui s'occupe de la mettre du bon "type".

    Edit: je pense que tu as pas mal de problème a comprendre comment fonctionne soit les requêtes SQL soit les concatenations de chaîne de caractères.
    J'vais te mettre en gros ce que ça va donner pour que tu comprenne:
    date_activite = '12012006' AND id_num_pers_elsa = '321'
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Points : 41
    Points
    41
    Par défaut
    Purée !!!! ...rrraaaa.....MERCI !

    J'ai cauchemardé sur mon projet pour cette put... de crouille différence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActivitesBindingSource.Filter = "date_activite = '" & DateTimePicker1.Value & "' And id_num_pers_elsa = '" & TextBox2.Text & "'"
    
    ActivitesBindingSource.Filter = "date_activite = '" & DateTimePicker1.Value & "'" And "id_num_pers_elsa = '" & TextBox2.Text & "'"
    ....tsss

    Merci ekinox ! Very very much !

    A part ça, mon Textbox2 contient le n° pers, pas la date.... et le format date est géré par le DateTimePicker...

    mon serveur SQL gère bien la chose... dans ma table, j'ai une colonne en smalldatetime qui gère ce format apparemment... rien ne gueule !...?

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

Discussions similaires

  1. filtrer un DataGridView par un Champ sur formulaire
    Par LE VIEUX dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/08/2008, 11h17
  2. Filtrer les données par DateTimePicker
    Par matrixdine dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/04/2008, 23h05
  3. [VB.NET] Filtrer un datagridview
    Par olbi dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/04/2007, 13h19
  4. Réponses: 1
    Dernier message: 18/11/2006, 14h06
  5. [VB.Net 2.0][DatagridView]Valeur par defaut pour cellule ?
    Par pat59 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/03/2006, 15h08

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