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

VB.NET Discussion :

condition avec checkbox


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut condition avec checkbox
    Bonjour à tous,

    J'ai une listBox avec des agents dedans, je veux faire un filtre c'est à dire si je coche la checkbox j'ai le nom de tous les agents, si elle n'est pas coché seul les agents qui sont encore en poste à la date choisi par l'utilisateur sont affichés, tourné dans l'autre sens les agents dont leur date de départ est comprise entre une date au hasard du genre 01/01/1900 et la date sélectionné par l'utilisateur ne s'affichent pas.

    Voici 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     Private H As New Hashtable
     Private Index_Cherche As Integer
    
            Dim NbEnreg
            H.Clear()
            If CheckBox1.CheckState = CheckState.Checked Then
                Me.objDATA = New CLdata()
                Me.rqSql = "SELECT Index_Agent, Nom, Prenom " & _
                           "FROM Tbl_Agents ORDER BY Nom, Prenom ASC "
                Me.DS = Me.objDATA.getRows(Me.rqSql, "TBL_CHOIX_AGENT") 
            ElseIf CheckBox1.CheckState = CheckState.Unchecked Then           
     Me.objDATA = New CLdata()
                Me.rqSql = "SELECT Index_Agent, Nom, Prenom " & _
                           "FROM Tbl_Agents WHERE ('1900/01/01' >Tbl_Agents.Date_Sortie_DGAC > '" & Format(DateValue(Me.Calendrier.Value), "yyyy-MM-dd") & "')  ORDER BY Nom, Prenom ASC "
                Me.DS = Me.objDATA.getRows(Me.rqSql, "TBL_CHOIX_AGENT")
            End If
            NbEnreg = DS.Tables(0).Rows.Count - 1
            For I = 0 To NbEnreg
                H.Add(I, DS.Tables(0).Rows(I).Item(0))
                Me.search.Items.Add(DS.Tables(0).Rows(I).Item(1) & " " & DS.Tables(0).Rows(I).Item(2))
            Next
        End Sub

    Que mettre dans la clause where? Le code est-il bon?
    Merci.

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    La partie Where de ta requête est mauvaise, tu ne peux faire un WHERE value1 < Value2 < Value3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '1900/01/01' >Tbl_Agents.Date_Sortie_DGAC > '" & Format(DateValue(Me.Calendrier.Value), "yyyy-MM-dd"
    tu devrais la remplacer par value1 < Value2 AND Value2 < Value3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '1900/01/01' > Tbl_Agents.Date_Sortie_DGAC AND Tbl_Agents.Date_Sortie_DGAC > '" & Format(DateValue(Me.Calendrier.Value), "yyyy-MM-dd"
    A vérifier aussi ton format... car moi j'aurais mit toute la requête dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string.format("SELECT Index_Agent, Nom, Prenom " & _
                           "FROM Tbl_Agents WHERE ('1900/01/01' >Tbl_Agents.Date_Sortie_DGAC AND Tbl_Agents.Date_Sortie_DGAC > '{0:yyyy-MM-dd}' ORDER BY Nom, Prenom ASC " , _
                           Me.Calendrier.Value)
    Mis à part ca, ton code à l'air bon mais multiplie le requête à chaque fois que l'on coche ou décoche ton checkbox...
    Une autre manière de procéder est de filtrer avec le filtre des vue, ce qui rend la chose beaucoup plus simple vu que l'affichage ce met à jour automatiquement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dts.Tables(0).DefaultView.RowFilter = string.format("'1900/01/01' >Tbl_Agents.Date_Sortie_DGAC AND Tbl_Agents.Date_Sortie_DGAC > '{0:yyyy-MM-dd}'", taDate)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Pourrais-tu m'expliquer les filtres de vues? Le problème que j'ai c'est que ma requête fonctionne que quand le checkbox est décoché, si je clic dessus ça ne change rien du tout

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Il te suffit de mettre ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dts.Tables(0).DefaultView.RowFilter = string.format("'1900/01/01' >Tbl_Agents.Date_Sortie_DGAC AND Tbl_Agents.Date_Sortie_DGAC > '{0:yyyy-MM-dd}'", taDate)
    dans l'évènement CheckedChanged de ton checkBox.
    Tout le reste va dans l'évènement load de ta form.

    le filtrage est extrêmement simple comme je te le montre dans le post plus haut et ci-dessus.
    sur msdn : http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
    Il faut juste faire attention après de travaillé sur les éléments de la vue si tu utilises les index, car la position d'un élément dans une vue filtrée n'est pas sa position dans le datatable...
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dt.DefaultView.Item(indexLigne).Item(indexColonne)
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dt.Rows(indexLigne).Item(indexColonne)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Ok j'essai ça demain et je te redis en tout cas merci de m'aider

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Pas de problème, le forum est là pour ca

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Bon j'ai enfin réussi voila 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
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
            Dim NbEnreg
            Me.objDATA = New CLdata()
            If sender.checked Then
                Me.rqSql = "SELECT Tbl_Agents.Index_Agent, Tbl_Agents.Nom, Tbl_Agents.Prenom FROM Tbl_Agents"
            Else
                Me.rqSql = "SELECT Tbl_Agents.Index_Agent, Tbl_Agents.Nom, Tbl_Agents.Prenom " & _
                "FROM Tbl_Agents " & _
                "WHERE (('1900/01/01' < Tbl_Agents.Date_Sortie_DGAC) AND ((Tbl_Agents.Date_Sortie_DGAC >  '" & Format(DateValue(Me.Calendrier.Value), "yyyy-MM-dd") & "')) or (Tbl_Agents.Date_Sortie_DGAC is null))"
            End If
            Me.DS = Me.objDATA.getRows(Me.rqSql, "TBL_CHOIX_AGENT")
            NbEnreg = DS.Tables(0).Rows.Count - 1
            H.Clear()
            Me.search.Items.Clear()
            For I = 0 To NbEnreg
                H.Add(I, DS.Tables(0).Rows(I).Item(0))
                Me.search.Items.Add(DS.Tables(0).Rows(I).Item(1) & " " & DS.Tables(0).Rows(I).Item(2))
            Next
        End Sub

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

Discussions similaires

  1. [XL-2003] Macro Copier Coller Avec CheckBox et Conditions
    Par HoLbOrN dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/11/2017, 13h09
  2. Conditions avec 2 checkbox
    Par romann76 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/07/2009, 10h24
  3. Condition avec Checkbox
    Par mickou64 dans le forum MFC
    Réponses: 16
    Dernier message: 30/01/2009, 14h06
  4. cellules avec condition relié avec checkbox
    Par lavalois dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 19/03/2008, 09h52
  5. [ Struts ] plusieurs conditions avec equal?
    Par njac dans le forum Struts 1
    Réponses: 7
    Dernier message: 04/06/2004, 09h04

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