1

问题:我想从 SQL Server 数据库表中检索复选框的名称,并查看它是否在“if”语句中被选中。

界面:我的表单由一个列表框、一个按钮和一个复选框组成。

SQL Server 表:

ID   Name   cbName
 1   Rest   cbRest

我想写:

sb = dt.rows(0)(cbName) 
    If sb.Checked() = True Then
        ListBox1.Items.Add(dt.Rows(0)(1).ToString())
    Else
        MsgBox("Nothing checked")
    End If

预期的输出应该是列表框中的 Rest。当然,下一步是遍历数百个复选框,但现在我只想澄清如何使这项工作发挥作用。

现在我收到以下错误:

无法将“System.String”类型的对象转换为“System.Winddows.Forms.CheckBox”类型

我将 Visual Basic Express 2008 与 SQL Server 2008 Express、64 位 Windows 7 Pro 一起使用

提前致谢

4

3 回答 3

0

您必须遍历所有控件并找到具有 id/name [cbRest] 的控件。一旦您掌握了控件(这是一个复选框),您就可以使用

If sb.Checked() = True Then
    ListBox1.Items.Add(dt.Rows(0)(1).ToString())
Else
    MsgBox("Nothing checked")
End If

其中 sb 将是您找到的控件。

于 2013-04-23T14:39:46.640 回答
0

您需要声明一个变量 (sb) 这是一个按钮的片段:

Dim btn As Button 
...
btn = CType(Controls("Button1"), Button)

在您的情况下,您将使用 SQL 中的 cbName 值代替“Button”。

'Controls' 是持有按钮/复选框的父级。该片段与表单上的按钮一起使用。如果您有一个包含复选框的容器,请使用 container_name.Controls()。

于 2013-04-23T14:59:31.397 回答
0

假设您已将复选框直接添加到页面,您可以使用 名称按名称查找控件Me.Controls.Item(controlID),因此在您的情况下

Dim sb as CheckBox = CType(Me.Controls.Item(dt.rows(0)("cbName")), CheckBox)
于 2013-04-23T15:00:00.060 回答