Foxtable(狐表)用户栏目专家坐堂 → datacolchanged代码问题


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

主题:datacolchanged代码问题

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


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
datacolchanged代码问题  发帖心情 Post By:2015/2/4 9:22:00 [只看该作者]

我在datacolchanged中的if判断无效。
代码如下:
Dim ztsl As Double '定义变量ztsl,用于存放未到货数量的总和
If e.DataCol.Name = "orderWdhsl" Then ‘如果列名为orderWdhsl(未到货数量)
    For Each dr As DataRow In DataTables("orderList").Select("[orderItemID] = '" & dr("orderItemID") & "'") ’在订单表中选择素有物料ID等于当前行物料ID的项目
        ztsl = ztsl + dr("orderWdhsl") ‘变量ztsl等于ztsl加上此行的未到货数量
    Next
Dim dr2 As DataRow = DataTables("kcList").Find("[whItemID] = '" & e.DataRow("orderItemID") & "'") ’库存表中相同物料ID的在途数量用ztsl变量中的数值来替代
dr2("whzaitu") = ztsl
End If

我表格中的未到货数量是通过订单数量-已到货数量自动计算出来的。所以订单表中首先发生datacolchanged的是已到货数量。是否这个原因,造成datacolchanged中的if判断无法执行。

谢谢!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/2/4 9:26:00 [只看该作者]

 表达式列,不能直接判断

 

http://www.foxtable.com/help/topics/2381.htm

 

 

Dim ztsl As Double '定义变量ztsl,用于存放未到货数量的总和
If e.DataCol.Name = "订单数量" OrElse e.DataCol.Name = "已到货数量" Then '如果列名为orderWdhsl(未到货数量)
    For Each dr As DataRow In DataTables("orderList").Select("[orderItemID] = '" & dr("orderItemID") & "'") '在订单表中选择素有物料ID等于当前行物料ID的项目
        ztsl = ztsl + dr("orderWdhsl") '变量ztsl等于ztsl加上此行的未到货数量
    Next
    Dim dr2 As DataRow = DataTables("kcList").Find("[whItemID] = '" & e.DataRow("orderItemID") & "'") '库存表中相同物料ID的在途数量用ztsl变量中的数值来替代
    dr2("whzaitu") = ztsl
End If


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


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

For Each dr As DataRow In DataTables("orderList").Select("[orderItemID] = '" & dr("orderItemID") & "'"’在订单表中选择素有物料ID等于当前行物料ID的项目
        ztsl = ztsl + dr("orderWdhsl"‘变量ztsl等于ztsl加上此行的未到货数量
    Next

直接用 

  ztsl = DataTables("orderList").Compute("sum(orderWdhsl)","[orderItemID] = '" & dr("orderItemID") & "'")
Dim dr2 As DataRow = DataTables("kcList").Find("[whItemID] = '" & e.DataRow("orderItemID") & "'"’库存表中相同物料ID的在途数量用ztsl变量中的数值来替代
if dr2 isnot nothing then
dr2("whzaitu") = ztsl
end if

如果你列是表达式列,表达式列是不会触发DataColChanged的.  你要判断改变表达式列的列

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


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


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


加好友 发短信
等级:二尾狐 帖子:597 积分:4974 威望:0 精华:0 注册:2012/12/27 12:34:00
  发帖心情 Post By:2015/2/4 9:58:00 [只看该作者]

谢谢两位老师的解答。

问题已解决。

 回到顶部