【问题标题】:Converting string Yes or No to Boolean in vb在vb中将字符串是或否转换为布尔值
【发布时间】:2020-10-22 19:05:01
【问题描述】:

我想将 txtQualified 的字符串转换为在数据库中设置为位的布尔值,但它不起作用,错误“无法识别字符串具有有效的布尔值”,请问我该怎么办?


 Sub verify()
       
        If aggregate >= CutOffPoint.txtMaleCut.Text AndAlso cmbGender.SelectedItem = "Male" Then
            MsgBox("Sorry, You do not Qualify to Offer the Program")
            txtQualified.Text = "No"
            Convert.ToBoolean(txtQualified.Text)
        ElseIf aggregate >= CutOffPoint.txtFemaleCut.Text AndAlso cmbGender.SelectedItem = "Female" Then
            MsgBox("Sorry, You do not Qualify to Offer the Program")
            txtQualified.Text = "No"
            Convert.ToBoolean(txtQualified.Text)
        ElseIf aggregate < less Then
            MsgBox("Sorry, Invalid Entry, Please Entry all Provided Grades")
        Else
            MsgBox("Congratulation, You have Qualified")
            txtQualified.Text = "Yes"
            Convert.ToBoolean(txtQualified.Text)

        End If

    End Sub

【问题讨论】:

  • 为什么首先使用 TextBox 而不是 CheckBox?
  • 另外,请注意Convert.ToBoolean 是一个函数,所以如果你确实使用它,你必须将它分配给一个变量,例如isQualified = Convert.ToBoolean(someExpression)
  • 您确定aggregate &gt;= CutOffPoint.txtMaleCut.Text 是正确的检查吗? .Text 属性听起来应该给出一个字符串结果,所以这可能是按字母顺序而不是数值来检查

标签: sql sql-server vb.net boolean data-conversion


【解决方案1】:

只需编写一个小函数即可获取布尔值。如果值可能不是“是”和“否”,您可以添加一些验证。

为具有正确数据库数据类型的参数包含.Add 方法将使操作更安全。

Private Sub OPCode()
    Dim sql = "Insert Into YourTable (ABitField) Values (@BitField);"
    Using cn As New SqlConnection("Your connection string"),
            cmd As New SqlCommand(Sql, cn)
        cmd.Parameters.Add("@BitField", SqlDbType.Bit).Value = GetBoolean(txtQualified.Text)
        cn.Open()
        cmd.ExecuteNonQuery()
    End Using
End Sub

Private Function GetBoolean(s As String) As Boolean
    Return s = "Yes"
    Return False
End Function

【讨论】:

  • Return s = "Yes" 作为 GetBoolean 的完整主体更短
【解决方案2】:

尝试将此功能添加到您的项目中:

Public function ConvertTextToBoolean(InputStr as String) As Boolean

if InputStr = "No" Then
   Return False
end if

if InputStr = "Yes" Then
   Return True
end if

if not InputStr = "Yes" and not InputStr = "No" Then
   MsgBox("Invalid String")
end if

end function

但我没有正确理解:你想在没有“if”的情况下这样做吗!?

【讨论】:

    猜你喜欢
    • 2016-07-17
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 2018-09-10
    • 2019-02-19
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多