vb.net - 如何根据 CheckedListBox 选择进行 SQL 查询
问题描述
我有一个CheckedListBox1
和它的选择创建一个 SQL 查询来填充 DataGridView。不幸的是,它没有给我任何东西,可能我的 SQL 选择语句不正确,或者我传递了一个不正确的字符串值数组
Private Sub CheckedListBox1_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck
Dim i As Integer
'xx is an array of string, used to store checkedlistbox selection
Dim xx() As String
Dim sqlstr2 As String
For i = 0 To CheckedListBox1.Items.Count - 1 Step i + 1
If CheckedListBox1.GetItemCheckState(i) = CheckState.Checked Then
xx(i) = CheckedListBox1.SelectedValue(i)
End If
Next
sqlstr2 = "SELECT * From Table WHERE [TagName] in (' "%, "' '"& [xx] & "' )"'
SQL.RunQuery(sqlstr2)
If SQL.SQLDataset.Tables.Count > 0 Then
DataGridView1.DataSource = SQL.SQLDataset.Tables(0)
End If
End Sub
解决方案
在声明另一个数组之前,请检查 MS 文档。我不相信您每次选中或取消选中一个框时都想运行您的查询。我将代码移动到一个按钮,当用户确定检查时可以单击该按钮。
幸运的是,CheckedListBox 有一个 CheckedItems 集合可供循环使用。在循环中,我们构建一个字符串以在 sql 语句的 In 子句中使用。
检查即时窗口,看看 sql 语句是你想要的
我只能假设您的其余代码涉及您自己的自定义类和方法。我把它注释掉了,所以我可以测试代码。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim inClause As String = ""
For Each item In CheckedListBox1.CheckedItems
inClause &= "'" & item.ToString & "',"
Next
'Get rid of the final comma
inClause = inClause.TrimEnd(","c)
Dim sqlstr2 = "SELECT * From Table WHERE [TagName] in (" & inClause & ");"
Debug.Print(sqlstr2)
'Sql.RunQuery(sqlstr2)
'If Sql.SQLDataset.Tables.Count > 0 Then
' DataGridView1.DataSource = Sql.SQLDataset.Tables(0)
'End If
End Sub
推荐阅读
- javascript - 我可以在 React 中提高 PUT 请求的性能吗?
- javascript - 使用 querySelectorAll() 选择列表的第二个元素
- batch-file - 批处理 - 如何创建多个文本文件?
- java - 在 Visual Studio 设置中设置 java.home 或 xml.java.home
- php - 在 belonsToMany 关系上使用 withPivot 时限制检索的列
- python - 使用另一个数据框的值,根据列名乘以熊猫数据框的行
- javascript - 修改嵌套对象数组的所有元素中的属性的最佳方法
- c++ - 防止 CIN 上的多个输入
- android - 如何从 Firebase 数据库中删除此特定节点?
- javascript - Jmeter 脚本重放问题 - 请启用 JavaScript 以查看页面内容