【发布时间】:2017-06-02 21:23:13
【问题描述】:
我在 MS-Access 数据库中保存了一个布尔变量(尽管有趣的是,当我以编程方式添加它时,它在数据库中显示为 0 或 -1,而不是一个复选框?),并且在加载时数据转换成表格,我有以下代码:
cbNoCharge.Checked = Convert.ToBoolean(fTable.Rows(0).Item("freeDelivery"))
但是,这是错误的,说
输入的字符串格式不正确
这让我很困惑?尽管初始 DB 值无论如何都是布尔值,但我将其转换为一个只是为了确保它。为什么 'True' 或 'False' 的值不能用作布尔值?
我也试过了
If fTable.Rows(0).Item("freeDelivery") = True Then
cbNoCharge.Checked = True
End If
但同样的事情发生了吗?这到底是怎么回事?!
编辑
我添加了以下行作为测试:
Dim bFree As Boolean = fTable.Rows(0).Item("freeDelivery")
接受 exact 与布尔值相同的字段。所以,我然后尝试了
cbNoCharge.Checked = bFree
然后错误再次发生。
编辑 2
在遵循@VisualVincent 的建议后,我在他的代码中添加了检查该值是否为 True 或 False - 如此处所示,它是 True。
【问题讨论】:
-
为您的值创建一个变量:
Dim bFree As Object = fTable.Rows(0).Item("freeDelivery"),然后检查它以查看它实际包含的内容:MessageBox.Show(bFree.ToString()),然后在此处发布结果。通过这样做,您将能够看到它实际上是True还是False,或者它是否是一个完全不同的值。 -
@VisualVincent 是的,请参阅编辑。这是真的。