从SQL Server版本1获取复选框名称

时间:2013-04-23 14:13:32

标签: sql vb.net types sql-server-2008-express

问题:我想从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

提前致谢

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

Dim sb as CheckBox = CType(Me.Controls.Item(dt.rows(0)("cbName")), CheckBox)