Foxtable(狐表)用户栏目专家坐堂 → [求助]一段代码的疑惑


  共有2160人关注过本帖树形打印复制链接

主题:[求助]一段代码的疑惑

帅哥哟,离线,有人找我吗?
huangfanzi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]一段代码的疑惑  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2015/6/29 14:04:00 [只看该作者]

当合同主号发生变化时,也会执行你以上的代码,所以结果是else后的代码


 回到顶部
帅哥哟,离线,有人找我吗?
yinyb36
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2015/6/29 14:07:00 [只看该作者]

你那个代码,不管哪列发生变化都会执行


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/6/29 14:11:00 [只看该作者]

4楼正解. 你改变了 合同主号 主号,又会触发一次DataColChanged .然后此时执行这段代码.就会进入Else 覆盖上次结果

 回到顶部