我在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 相同的字段为boolean fine。所以,我接着尝试了
cbNoCharge.Checked = bFree
错误再次发生。
编辑2
在遵循@VisualVincent的建议后,我在他的代码中添加了检查值实际上是True还是False - 如此处所示,它是True。
答案 0 :(得分:0)
如果是文本框字段,则应该在字段中输入Y或N.没有告诉它被检查或没有检查。仅在数据库表上检查是通过显示而不是实际数据的表示。如果是访问中的复选框,则输入"Y"
AS STRING,然后选中该复选框。
或者您可以使用1或0,1 =已选中,0 =未选中。
答案 1 :(得分:0)
错误即将发生,因为CheckedChanged
的{{1}}事件触发了另一种方法,错误发生在该方法中,而不是CheckBox
本身。
更深入,更彻底的调试让我找到了这个。