以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于非零值的计算问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=53538) |
||||
-- 作者:CBSLULU33 -- 发布时间:2014/7/10 10:25:00 -- 关于非零值的计算问题 专家好,在我的项目中有一项开票管理,是从已有的销售订单中选取记录(通过弹出窗口的方式)进行开票操作,弹出窗口中分上下两个窗口,上面是销售订单主表,显示客户名称、订单编号等;下面是明细表,显示该客户该订单编号下的销售明细,如:销售了A商品5件(单记录),或者销售了A商5件、B商品3件、C商品1件(多记录) 弹出窗口设置了一个仅显示"非零值"的条件,即某销售订单记录下如果满足所有商品所有数量均已开票,则不显示该销售订单记录的明细;否则在明细中显示未开票商品及数量 现在遇到的问题是: 在选择单记录(即一条销售订单中仅有一件商品)时计算没问题,在完成该件商品及数量的开票后就不再显示;但在选择多记录(即一条销售记录中有多件商品)就会出现如下问题 如销售记录中有A商5件、B商品3件、C商品1件,但我这次实际需要开票的项目是:A商品1件,B商品3件,操作完毕后再选择该条销售记录时,该记录中所有商品已开票数量则变成了该销售订单的数量合计,未开票数量则变成了负值 这里面有个关键是:
|
||||
-- 作者:Bin -- 发布时间:2014/7/10 10:28:00 -- 子表信息有多个, 是不可以直接这样引用子表的, 系统无法知道你要引用哪一行数据. 好比你有多个儿子,你直接喊"儿子过来" 谁知道你要喊谁?
|
||||
-- 作者:有点甜 -- 发布时间:2014/7/10 10:34:00 -- 你应该在发票明细表加入一列表达式列 是否开票 isnull(开票数量, False)
然后订单明细表的表达式 IsNull(Sum(Child(订单_开票).是否开票),0) |
||||
-- 作者:CBSLULU33 -- 发布时间:2014/7/10 10:41:00 -- 谢谢两位专家,但是我照您的意思做,出现了错误提示 无效的聚合函数 Sum()和类型 String 的用法。 请问这是怎么回事呢?
|
||||
-- 作者:Bin -- 发布时间:2014/7/10 10:43:00 -- 列类型只能是数值类型, 字符串类似是无法用SUM统计的 |
||||
-- 作者:CBSLULU33 -- 发布时间:2014/7/10 10:58:00 -- 甜老师,我已经按照您说的进行了表达式的增加,并且表达式设置为整数型,但在弹出窗口中,已开票数量的统计结果仍然是SUM整个销售订单的数量合计,麻烦您再帮我指导指导,谢谢! |
||||
-- 作者:Bin -- 发布时间:2014/7/10 11:03:00 -- 有条件统计子表看这里http://www.foxtable.com/help/topics/2472.htm |
||||
-- 作者:有点甜 -- 发布时间:2014/7/10 11:04:00 -- 设置的关联有问题,订单_开票 的关联,应该用 明细表的_Identify或明细表的编号 去关联,而不能用订单编号 |
||||
-- 作者:CBSLULU33 -- 发布时间:2014/7/10 11:15:00 -- 谢谢甜老师,我刚才查看了一下,发现关联的两个表(销售订单明细表和开票明细表),仅销售订单明细表中有 _Identify,开票明细表中则没有,而您所说的明细表编号则都没找到! |
||||
-- 作者:有点甜 -- 发布时间:2014/7/10 11:18:00 -- 那么,你就根本不能这样子关联,关联么有什么效果。
你计算开票数量的时候,要用代码统计,参考跨表统计的知识点 |