-- 作者:netfox168
-- 发布时间:2016/8/31 11:31:00
-- [求助] 关于跨表间统计问题
学习教材中关于“跨表间统计”一节,其中有一段是这样的内容:
---------------------------------------------------------
假定有一个如下图所示的订单表:
此主题相关图片如下:订单.jpg
我们希望新增这么一个表,在该表中输入一个产品名称,能够自动统计出该产品总的订购数量。 首先增加一个表,表的名称为“统计”,该表包括两列,分别是字符型的产品,和整数型的数量:
此主题相关图片如下:产品.jpg
然后在该表的DataColChanged事件 中设置如下代码:
If e.DataCol.Name = "产品" Then e.DataRow("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = \'" & e.NewValue & "\'") End If
上面的代码能够自动统计所输入产品的销售数量。
---------------------------------------------------------
我现在的问题是,如果统计条件不单单“产品”,而是“产品”和“客户”,这个代码应该怎么改?当然在“统计”表中还要加一列“客户”。
|
-- 作者:netfox168
-- 发布时间:2016/8/31 15:44:00
--
放在“管理项目”>“项目属性”>“项目事件”>“MainTableChanged”
我的目的是当切换到某个表后就自动计算,不知哪里出错了?
全部代码如下:
If MainTable.Name = "料件消耗" Then \'切换到表 "料件消耗" 时执行下面代码 DataTables("料件消耗").DeleteFor("") \'删除所有行 Dim A() As String = {"成品货号","EXG_VERSION","IMG_NO","成品名称","料件名称","计量单位","DEC_CM"} Dim B() As String = {"成品货号","成品版本","料件序号","成品名称","料件名称","计量单位","净单耗"} For j As Integer = 0 To Tables("PRE_EMS3_CUS_CONSUME").Rows.count - 1 Tables("PRE_EMS3_CUS_CONSUME").Position = j Dim dr As DataRow = DataTables("料件消耗").AddNew For i As Integer = 0 To A.Length - 1 dr(B(i)) = Tables("PRE_EMS3_CUS_CONSUME").Current(A(i)) Next Next Select Case e.DataCol.Name Case "成品货号","成品版本" e.DataRow("出货量") = DataTables("DECLARATION_DETAIL").Compute("Sum(QTY_1)","[GOODS_ID] = \'" & e.DataRow("成品货号") & "\' and [G_NO]=\'" & e.DataRow("成品版本") & "\'") End Select End If
第一步是将BOM表全部的产品BOM参数抄到“料件消耗”表,第二步是根据“成品货号”和“成品版本”统计表“DECLARATION_DETAIL” 的 QTY_1 的数量。
[此贴子已经被作者于2016/8/31 15:49:17编辑过]
|