Discussion: VB NET + Selection

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 214
    Points : 97
    Points
    97

    Par défaut VB NET + Selection

    Bonjour,

    J'ai un code qui me permet de filtrer ce que je veux que CR m'affiche
    En total j'ai 4 combobox. La première contient All + Licence, ce qui permet d'afficher tout avec All.

    Par contre je ne sais pas comment faire avec les autres combobox. Car dans mon code il affichera seulement ce qui est sélectionné.
    Je voudrai qu'il soit pas obliger de sélectionner tout pour afficher seulement une partie.
    Exemple, qu'il choisisse un Maker et qu'il laisse Licence, Types ou Scale vide et qu'il affiche tous de Maker sans filtre.

    Merci de votre aide.

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
            If ComboBox1.Text = "All" Then
                Me.Cursor = Cursors.WaitCursor
                Try
                    Dim ds As New DataSet
                    Dim query As String
                    query = "select * from product order by id_maker asc, id_types asc, id_scale asc,name asc"
                    Dim dscmd As New MySqlDataAdapter(query, con)
                    dscmd.Fill(ds, "PAYPRODUCTTOTAL")
                    con.Close()
                    Dim cryds As New All_Database_Report
                    cryds.SetDataSource(ds.Tables(0))
                    CrystalReportViewer1.ReportSource = cryds
                    CrystalReportViewer1.Refresh()
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
            ElseIf ComboBox1.Text <> "All" Then
                If ComboBox2.Text = Nothing Then
                        MsgBox("Select a Maker", MsgBoxStyle.Exclamation)
                    ElseIf ComboBox3.Text = Nothing Then
                        MsgBox("Select a Type", MsgBoxStyle.Exclamation)
                    ElseIf ComboBox4.Text = Nothing Then
                        MsgBox("Select a Scale", MsgBoxStyle.Exclamation)
                    Else
                        Try
                            Dim ds As New DataSet
                            Dim query As String
                            p(0) = New MySqlParameter("@License", MySqlDbType.String)
                            p(0).Value = ComboBox1.Text
                            p(1) = New MySqlParameter("@Maker", MySqlDbType.String)
                            p(1).Value = ComboBox2.Text
                            p(2) = New MySqlParameter("@Type", MySqlDbType.String)
                            p(2).Value = ComboBox3.Text
                            p(3) = New MySqlParameter("@Scale", MySqlDbType.String)
                            p(3).Value = ComboBox4.Text
                            query = "select * from product WHERE license = @License AND id_maker = @Maker AND id_types =  @Type AND id_scale =  @Scale order by id_maker asc, id_types asc, id_scale asc,name asc"
                            Dim dscmd As New MySqlDataAdapter(query, con)
                            dscmd.SelectCommand.Parameters.Add(p(0))
                            dscmd.SelectCommand.Parameters.Add(p(1))
                            dscmd.SelectCommand.Parameters.Add(p(2))
                            dscmd.SelectCommand.Parameters.Add(p(3))
                            dscmd.Fill(ds, "PAYPRODUCTTOTAL")
                            con.Close()
                            Dim cryds As New All_Database_Report
                            cryds.SetDataSource(ds.Tables(0))
                            CrystalReportViewer1.ReportSource = cryds
                            CrystalReportViewer1.Refresh()
                        Catch ex As Exception
                            MessageBox.Show(ex.Message)
                        End Try
                    End If
                End If
     
                Me.Cursor = Cursors.Default

  2. #2
    Membre habitué
    Inscrit en
    juin 2008
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 144
    Points : 186
    Points
    186

    Par défaut

    la clause where de ta query doit être fonction des paramètres renseignés , par exemple :

    query = "select * from product WHERE 1=1"

    if p(0).Value<>"" then
    query += " AND license = @License"
    endif

    etc...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 214
    Points : 97
    Points
    97

    Par défaut

    Citation Envoyé par GaelleH Voir le message
    la clause where de ta query doit être fonction des paramètres renseignés , par exemple :

    query = "select * from product WHERE 1=1"

    if p(0).Value<>"" then
    query += " AND license = @License"
    endif

    etc...
    Oui mais non......
    J'essai d'adapter le code de manière que si on selectionne "Maker" et "Scale", il m'affiche que "Maker" et "Scale".

    Bref, que la requete oublie les autres paramatres comme License, type etc...........

    Sinon bonjour les if et Elsif.............

  4. #4
    Membre habitué
    Inscrit en
    juin 2008
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 144
    Points : 186
    Points
    186

    Par défaut

    Il me semble avoir répondu non ? il y a que 4 if ...

    Dim ds As New DataSet
    Dim query As String
    Dim dscmd As New MySqlDataAdapter(query, con)

    query = "select * from product where 1=1 "
    If ComboBox1.Text <> "All" Then
    dscmd.SelectCommand.Parameters.Add(ComboBox1.Text)
    query += " AND license = @License"
    end if
    If ComboBox2.Text <> "All" Then
    dscmd.SelectCommand.Parameters.Add(ComboBox2.Text)
    query += " AND Maker = @Maker"
    end if
    If ComboBox3.Text <> "All" Then
    dscmd.SelectCommand.Parameters.Add(ComboBox3.Text)
    query += " AND Type = @Type"
    end if
    If ComboBox4.Text <> "All" Then
    dscmd.SelectCommand.Parameters.Add(ComboBox4.Text)
    query += " AND Scale = @Scale"
    end if
    query += " order by id_maker asc, id_types asc, id_scale asc,name asc"
    dscmd.Fill(ds, "PAYPRODUCTTOTAL")
    con.Close()
    Dim cryds As New All_Database_Report
    cryds.SetDataSource(ds.Tables(0))
    CrystalReportViewer1.ReportSource = cryds
    CrystalReportViewer1.Refresh()

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 214
    Points : 97
    Points
    97

    Par défaut

    La solution correct que je voulai est ceci:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
            If ComboBox1.Text = "All" Then
                Me.Cursor = Cursors.WaitCursor
                Try
                    Dim ds As New DataSet
                    Dim query As String
                    query = "select * from product order by id_maker asc, id_types asc, id_scale asc,name asc"
                    Dim dscmd As New MySqlDataAdapter(query, con)
                    dscmd.Fill(ds, "PAYPRODUCTTOTAL")
                    con.Close()
                    Dim cryds As New All_Database_Report
                    cryds.SetDataSource(ds.Tables(0))
                    CrystalReportViewer1.ReportSource = cryds
                    CrystalReportViewer1.Refresh()
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
            Else
                Try
                    Dim ds As New DataSet
                    Dim query As StringBuilder = New StringBuilder()
                    Dim orderBy As StringBuilder = New StringBuilder()
                    p(0) = New MySqlParameter("@License", MySqlDbType.String)
                    p(0).Value = ComboBox1.Text
                    p(1) = New MySqlParameter("@Maker", MySqlDbType.String)
                    p(1).Value = ComboBox2.Text
                    p(2) = New MySqlParameter("@Type", MySqlDbType.String)
                    p(2).Value = ComboBox3.Text
                    p(3) = New MySqlParameter("@Scale", MySqlDbType.String)
                    p(3).Value = ComboBox4.Text
     
                    With query
                        .Append("select * from product WHERE 1=1 ")
                        If p(0).Value <> "" Then .Append(" AND license = @License ")
                        If p(1).Value <> "" Then .Append(" AND id_maker = @Maker ")
                        If p(2).Value <> "" Then .Append(" AND id_types =  @Type ")
                        If p(3).Value <> "" Then .Append(" AND id_scale =  @Scale ")
                        .Append(" order by id_maker asc, id_types asc, id_scale asc,name asc ")
                    End With
     
                    Dim dscmd As New MySqlDataAdapter(query.ToString(), con)
                    If p(0).Value <> "" Then dscmd.SelectCommand.Parameters.Add(p(0))
                    If p(1).Value <> "" Then dscmd.SelectCommand.Parameters.Add(p(1))
                    If p(2).Value <> "" Then dscmd.SelectCommand.Parameters.Add(p(2))
                    If p(3).Value <> "" Then dscmd.SelectCommand.Parameters.Add(p(3))
                    dscmd.Fill(ds, "PAYPRODUCTTOTAL")
                    con.Close()
                    Dim cryds As New All_Database_Report
                    cryds.SetDataSource(ds.Tables(0))
                    CrystalReportViewer1.ReportSource = cryds
                    CrystalReportViewer1.Refresh()
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try
            End If
            Me.Cursor = Cursors.Default

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/03/2009, 16h48
  2. sql vb.net SELECT DLookUp
    Par sanfour_walhan dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/09/2007, 10h28
  3. [vb.net]selection de ligne d'une listview
    Par roxanne dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/09/2006, 15h09
  4. [VB.net] Selection dans un TreeView
    Par chatainsim dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/06/2006, 17h00

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