以文本方式查看主题

-  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件,操作完毕后再选择该条销售记录时,该记录中所有商品已开票数量则变成了该销售订单的数量合计,未开票数量则变成了负值

这里面有个关键是:
  1. 销售订单明细表和开票明细表以销售订单号关联(关联名称:订单_开票)
     下载信息  [文件大小:   下载次数: ]
    图片点击可在新窗口打开查看点击浏览该文件:boc库存及订单管理项目.zip

  2. 销售订单明细表中有一项表达式(开票数量),我写成了:IsNull(Sum(Child(订单_开票).开票数量),0),即没有"开票数量"时强制显示为0,这里的SUM会不会是出错的原因
  3. 但如果我把这个表达式写成:Child(订单_开票).开票数量,则系统显示:无法显示位置1的位置"child"
  4. 请问我该怎么做?

--  作者: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
--  

 那么,你就根本不能这样子关联,关联么有什么效果。

 

 你计算开票数量的时候,要用代码统计,参考跨表统计的知识点