我使用Visual Studio在Visual Basic项目中有6个复选框,每个框的值超过10个。 我想将复选框的值插入到一个表中,将复选框的所有值都插入到一个单元格中(如果可能)。
例如,我有一个名为Food的表,其中包含用户ID,水果,蔬菜和零食。 假设我有3个复选框,我想在Fruit列中检查所有水果,因为它代表一个人。
我开始使用这样的代码:
sql = "INSERT INTO Food (id, Fruits, Vegetables, Snacks) VALUES ('" & txtIDR.Text & "','" & CheckedFruits.CheckedItems.ToString & "','" & CheckedVegetables.CheckedItems.ToString & "','" & CheckedSnacks.CheckedItems.ToString & "','" & ")"
我没有收到错误消息,但我担心我处理选中列表框的方式出错了。
请告知。
答案 0 :(得分:0)
编辑:抱歉没有看到CheckListBox
访问您应该使用的CheckListBox的属性:
CheckedListBox1.CheckedItems.Item(0)
其中0是您的商品索引
但是你需要记住CheckedItems.Item
只有在你试图调用CheckedListBox1.CheckedItems.Item(0)
但是没有被检查的情况下检查某些东西时才会存在你会得到索引超出界限
使用For Each
:
For Each check In CheckedListBox1.CheckedItems
Debug.WriteLine(check)
Next
你可以这样:
Public Function CreateSQL() As SqlCommand
Dim Fruits As String = ""
Dim Vegetables As String = ""
Dim Snacks As String = ""
For Each check In CheckedFruits.CheckedItems
Fruits = Fruits & check & ","
Next
If Fruits.LastIndexOf(",") = Fruits.Length - 1 Then
Fruits = Fruits.Remove(Fruits.LastIndexOf(","), 1)
End If
For Each check In CheckedVegetables.CheckedItems
Vegetables = Vegetables & check & ","
Next
If Vegetables.LastIndexOf(",") = Vegetables.Length - 1 Then
Vegetables = Vegetables.Remove(Vegetables.LastIndexOf(","), 1)
End If
For Each check In CheckedSnacks.CheckedItems
Snacks = Snacks & check & ","
Next
If Snacks.LastIndexOf(",") = Snacks.Length - 1 Then
Snacks = Snacks.Remove(Snacks.LastIndexOf(","), 1)
End If
MyCommand = New SqlCommand("INSERT INTO Food (id, Fruits, Vegetables, Snacks) VALUES (@UserID, @Fruits, @Vegetables, @Snacks)", dbConn)
MyCommand.Parameters.AddWithValue("@UserID", TicBoxText.Text)
MyCommand.Parameters.AddWithValue("@Fruits", Fruits)
MyCommand.Parameters.AddWithValue("@Vegetables", Vegetables)
MyCommand.Parameters.AddWithValue("@Snacks", Snacks)
Return MyCommand
End Sub