以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计遇到的特殊问题!!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47649)

--  作者:身份不明
--  发布时间:2014/3/14 10:23:00
--  统计遇到的特殊问题!!


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140314101756.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:002.jpg
图片点击可在新窗口打开查看
如图:我要统计每个订单的毛利润,就需要计算每个订单所需要的耗材,但是出库的时候,如果01 02 03的订单需要同样的耗材,就一起出库了,

这样就无法统计单个订单的出库信息了,遇到这样的情况,该如何设计呢!


--  作者:Bin
--  发布时间:2014/3/14 10:29:00
--  
2个方案

1.  01 02 03 增加重复数据

2. 再增加一个表,用来储存用料方案,  这个表用来储存和用料方案的关联


比如 表B

订单编号   用料方案
01             01
02             01
03             01
04             02
05             02

表C

方案编号   需要材料  数量 单价 总价


--  作者:狐狸爸爸
--  发布时间:2014/3/14 10:33:00
--  

“01/02/03”,这样输入订单编号是懒惰的表现,是混乱的根源,拆开成3行,各自输入对应的数量。


--  作者:身份不明
--  发布时间:2014/3/14 16:39:00
--  


此主题相关图片如下:1.jpg
按此在新窗口浏览图片

此主题相关图片如下:2.jpg
按此在新窗口浏览图片
没有关联的情况下,表A和表B都有编号列,通过对应编号,表A的出库成本=表B的总价之和(要对应编号求和)

该如何编写Datacolchange的的代码呢?

If e.DataCol.Name = "总价" Then \'发生变化的是总价列。
    \'则累计出库表中同编号产品的出库总价,然后赋值给变动行的数量列

    e.
DataRow("出库成本") = DataTables("表A").Compute("Sum(总价)","[总价] = \'" & e.NewValue & "\'")
End
If

 

这样写有什么问题吗?在就是在哪里增加对应编号的代码?


--  作者:Bin
--  发布时间:2014/3/14 16:43:00
--  
If e.DataCol.Name = "总价" Then \'发生变化的是总价列。
    \'则累计出库表中同编号产品的出库总价,然后赋值给变动行的数量列
    dim dr as datarow = datatables("表A").find("编号=\'" & e.datarow("编号") & "\'")
    if dr isnot nothing then
    dr
("出库成本") = DataTables("表B").Compute("Sum(总价)",
"编号=\'" & e.datarow("编号") & "\'")
    end if
End
 
If

--  作者:身份不明
--  发布时间:2014/3/14 16:53:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

Bin老师,数据没有变化,您看下例子!
--  作者:Bin
--  发布时间:2014/3/14 16:57:00
--  
你把代码放到了表A事件, 表A根本就没总价列你就不觉得奇怪?
怎么会有把代码放到表A的想法呢?   应该放到表B才对.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb



--  作者:身份不明
--  发布时间:2014/3/14 17:00:00
--  
明白了,Bin老师!我理解错了
--  作者:狐狸爸爸
--  发布时间:2014/3/14 17:03:00
--  

用关联和表达式,不很轻松吗:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目222.foxdb