以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]子表数据变化,主表的代码不起作用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=17620)

--  作者:wjl-se
--  发布时间:2012/3/19 11:36:00
--  [求助]子表数据变化,主表的代码不起作用
请老师看一下,修改子表(开票明细)的开票数量时,父表的"销售完成"不能自动变化,帮忙看一下代码
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.rar


--  作者:狐狸爸爸
--  发布时间:2012/3/19 12:31:00
--  
你不说清楚表与表,列与列之间的计算关系,大家也帮不上忙的。
--  作者:wjl-se
--  发布时间:2012/3/19 13:02:00
--  

简化一下:

"订单总表"为父表,"开票明细"为子表,通过"青专订单号"建立关联;订单总表中的"开票数量"为表达式:sum(child(开票关联).开票数量);库存也是表达式=完工入库-开票数量

"订单总表"其中有一段代码如下:

Select Case e.DataCol.name
    Case "生产完成","销售完成","完工入库","开票","库存"
        If e.DataRow("生产完成") = True AndAlso e.DataRow("库存") <= 0 Then
            e.DataRow("销售完成") = True
        Else
            e.DataRow("销售完成") = False
        End If
End Select

以上代码为了实现自动判断订单总表中"销售完成"是否勾选

问题是:修改子表中的"开票数量"时,父表中的"开票数量"会自动变化,当满足上述代码中"生产完成" = True AndAlso "库存" <= 0的条件时,"销售完成"却不会自动勾选.

难道表达式列的数值变化不会触发上述代码的执行?


--  作者:wjl-se
--  发布时间:2012/3/19 13:23:00
--  
还有为什么有时候重置列好用,有时没有反应呢?
--  作者:狐狸爸爸
--  发布时间:2012/3/19 14:05:00
--  

1、表达式列是不会触发DataColChanged事件的:
http://www.foxtable.com/help/topics/2381.htm

2、就你三楼的表述来说,销售完成应改为表达式列,其表达式为:

生成完成 = True And 库存 <= 0
 
 


--  作者:wjl-se
--  发布时间:2012/3/19 14:07:00
--  
是不是因为发生变化的列是表达式的原因?
--  作者:wjl-se
--  发布时间:2012/3/19 14:09:00
--  
明白了,谢谢狐爸!!