以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  and 和andalso会导致不一样的结果?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105425)

--  作者:lur320
--  发布时间:2017/8/18 21:16:00
--  and 和andalso会导致不一样的结果?
 Dim dr As DataRow
    dr=DataTables("Order").Find("planvsactual = \'Actual\' and so_no =\'" & e.node.Name & "\'")
    If dr IsNot Nothing Then
        For Each c As WinForm.Control In e.Form.Controls
            If Typeof c Is WinForm.CheckBox Then \'判断控件是否是文本框
                Dim t As WinForm.CheckBox = c \'使用特定类型的变量引用控件
                For Each Cl As DataCol In DataTables("Order").DataCols
                    If cl.name = t.name And dr(cl.name) <> #1/1/1 0:00:00# Then
                        t.Checked=True
                        MessageBox.Show(cl.name & t.name & dr(cl.name))
                    End If
                Next
            End If
        Next
    End If

上面这个代码会出错。显示:从字符串“1232ff”到类型“Date”的转换无效。

下面这个代码就运行正常

 Dim dr As DataRow
    dr=DataTables("Order").Find("planvsactual = \'Actual\' and so_no =\'" & e.node.Name & "\'")
    If dr IsNot Nothing Then
        For Each c As WinForm.Control In e.Form.Controls
            If Typeof c Is WinForm.CheckBox Then \'判断控件是否是文本框
                Dim t As WinForm.CheckBox = c \'使用特定类型的变量引用控件
                For Each Cl As DataCol In DataTables("Order").DataCols
                    If cl.name = t.name Andalso dr(cl.name) <> #1/1/1 0:00:00# Then
                        t.Checked=True
                        MessageBox.Show(cl.name & t.name & dr(cl.name))
                    End If
                Next
            End If
        Next
    End If

有人知道为什么么?是“=”运行的先后顺序么?

--  作者:lur320
--  发布时间:2017/8/18 21:16:00
--  
1232ff 是t.name  
--  作者:有点蓝
--  发布时间:2017/8/18 21:44:00
--  
http://www.foxtable.com/webhelp/scr/0220.htm

括起来试试

If (cl.name = t.name) And (dr(cl.name) <> #1/1/1 0:00:00#) Then

--  作者:lur320
--  发布时间:2017/8/18 21:53:00
--  
恩。夸起来有用