以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  datacolchanged代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64051)

--  作者:affixed
--  发布时间:2015/2/4 9:22:00
--  datacolchanged代码问题
我在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判断无法执行。

谢谢!

--  作者:有点甜
--  发布时间: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
--  发布时间: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
--  发布时间:2015/2/4 9:27:00
--  
http://www.foxtable.com/help/topics/2381.htm
--  作者:affixed
--  发布时间:2015/2/4 9:58:00
--  
谢谢两位老师的解答。

问题已解决。