以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]一段代码的疑惑 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=70796) |
-- 作者:huangfanzi -- 发布时间:2015/6/29 13:31:00 -- [求助]一段代码的疑惑 If e.DataCol.Name = "合同号" Then If e.DataRow("合同号").Length = 13 Then e.DataRow("合同主号") = e.DataRow("合同号").SubString(0,10) Else e.DataRow("合同主号") = Nothing End If End If 以上代码运行正常,但原先我写的代码如下,运行结果不对: If e.DataCol.Name = "合同号" andalso e.DataRow("合同号").Length = 13 Then e.DataRow("合同主号") = e.DataRow("合同号").SubString(0,10) Else e.DataRow("合同主号") = Nothing End If 上面这段代码运行后,无论在合同号这个格子内输入多少字符,即使是输入13个字符,永远执行了ELSE后的代码,按理上面二段代码是一样的,不知是哪里有差异。
|
-- 作者:Bin -- 发布时间:2015/6/29 14:03:00 -- 不可能呢.你可以加入代码调试一下看看 messagebox.show(e.DataCol.Name) messagebox.show(e.DataRow("合同号").Length ) If e.DataCol.Name = "合同号" andalso e.DataRow("合同号").Length = 13 Then e.DataRow("合同主号") = e.DataRow("合同号").SubString(0,10) Else e.DataRow("合同主号") = Nothing End If |
-- 作者:yinyb36 -- 发布时间:2015/6/29 14:04:00 -- 当合同主号发生变化时,也会执行你以上的代码,所以结果是else后的代码 |
-- 作者:yinyb36 -- 发布时间:2015/6/29 14:07:00 -- 你那个代码,不管哪列发生变化都会执行 |
-- 作者:Bin -- 发布时间:2015/6/29 14:11:00 -- 4楼正解. 你改变了 合同主号 主号,又会触发一次DataColChanged .然后此时执行这段代码.就会进入Else 覆盖上次结果 |