Click here to Skip to main content
15,937,012 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
It can only filter one checked item. When I check two items, it only shows the first item that I check. Any idea on how the logic would be?

For item As Integer = 0 To CheckedListBox1.CheckedItems.Count - 1
            Dim sql = "select * from Status where Stat= '" & CheckedListBox1.CheckedItems(item) & "'"
            Dim dt As DataTable
            Dim ds As New DataSet
            cnn = New OleDbConnection(connectionString)

            Try
                cnn.Open()
                adptr = New OleDbDataAdapter(sql, cnn)
                adptr.Fill(ds)
                adptr.Dispose()
                cnn.Close()

                dt = ds.Tables(0)
                Form5.DataGridView1.DataSource = dt

            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
            Form5.DataGridView1.Visible = True
        Next
Posted

1 solution

You're only populating the DataGridView for individual checked items ... the contents of DataTable dt change each time you go around the loop.

You would be better off building up a list of the checked items first and using that list in a single sql statement e.g. ...
SQL
Dim statList As String = "("
For item As Integer = 0 To CheckedListBox1.CheckedItems.Count - 1
    statList += "'" & CheckedListBox1.CheckedItems(item) & "',"
Next
statList = statList.Substring(0, statList.Length - 1) + ")"

Dim sql = "select * from Status where Stat in " + statList
 
Share this answer
 
Comments
Member 12198986 22-Jan-17 10:52am    
do it same for c#...Please
CHill60 27-Jan-17 11:07am    
If you have a question of your own you should really use the Ask a Question link. However, I think what you need is similar to the following (untested)):
            var statList = "(";
            for (var item = 0; item < CheckedListBox1.CheckedItems.Count; item++)
                statList += "'" + CheckedListBox1.CheckedItems[item] + "',";
            statList = statList.Substring(0, statList.Length - 1) + ")";
            var sql = "select * from Status where Stat in " + statList;

or
            var statList = CheckedListBox1.CheckedItems.Cast<object>().Aggregate("(", (current, t) => current + ("'" + t + "',"));
            statList = statList.Substring(0, statList.Length - 1) + ")";
            var sql = "select * from Status where Stat in " + statList;

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900