以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于逻辑的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=178863)

--  作者:rjh4078
--  发布时间:2022/7/25 7:25:00
--  关于逻辑的问题
在datacolchanged事件(其它事件暂未测试)中
如果某个字段是逻辑列,使用1和0时无法触发事件 必须使用true false
这个能否统一一下.
比如事件中的代码

Select Case e.DataCol.Name
    Case "第三列"
        If e.NewValue = True Then
            MessageBox.Show("1")
        End if
        
End Select

触发的代码是 dr("第三列")=1

--  作者:有点蓝
--  发布时间:2022/7/25 8:42:00
--  
这个玩意不是统一不统一的问题,正常vb语言逻辑值就是true/false。其它用法都是不严谨的。

至于【dr("第三列")=1】可以执行,那涉及到比较深层的计算机原理问题,不好解释。简单的说就是逻辑值,赋值0就是false,任何其它值都是true。转换为二进制,就是除了0之外,其它任何数值都至少会有一个1,机器都会解释为真。

下面代码可以自己测试一下:
Dim a, b As Boolean
a = -1
b = 1
Output.Show(a)
Output.Show(b)
Output.Show(a = b)
a = 0
b = 999
Output.Show(a)
Output.Show(a = 0)
Output.Show(b = 1)
Output.Show(b = 999)
Output.Show(b = True)

--  作者:rjh4078
--  发布时间:2022/7/25 13:11:00
--  
感谢 学习了