以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 关于跨表间统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89859)

--  作者:netfox168
--  发布时间:2016/8/31 11:31:00
--  [求助] 关于跨表间统计问题

学习教材中关于“跨表间统计”一节,其中有一段是这样的内容:

 

---------------------------------------------------------

假定有一个如下图所示的订单表:


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

 

我们希望新增这么一个表,在该表中输入一个产品名称,能够自动统计出该产品总的订购数量。
首先增加一个表,表的名称为“统计”,该表包括两列,分别是字符型的产品,和整数型的数量:


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

 

然后在该表的DataColChanged事件 中设置如下代码:

 

If e.DataCol.Name = "产品" Then
    e.DataRow("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = \'" & e.NewValue & "\'")
End If

 

上面的代码能够自动统计所输入产品的销售数量。

---------------------------------------------------------

 

我现在的问题是,如果统计条件不单单“产品”,而是“产品”和“客户”,这个代码应该怎么改?当然在“统计”表中还要加一列“客户”。


--  作者:有点蓝
--  发布时间:2016/8/31 11:42:00
--  
上面的代码改为

Select Case e.DataCol.Name
    Case "产品","客户"
        e.DataRow("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = \'" & e.DataRow("产品") & "\' and [客户]=\'" & e.DataRow("客户") & "\'")
End Select

--  作者:netfox168
--  发布时间:2016/8/31 15:27:00
--  

按回复修改了代码,但出错,提示如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:错误提示.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2016/8/31 15:35:00
--  
代码放在什么地方啊,帮助是放在DataColChanged事件哦
--  作者: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编辑过]

--  作者:有点蓝
--  发布时间:2016/8/31 15:55:00
--  
2楼代码放到DataColChanged事件,不能放在MainTableChanged
--  作者:netfox168
--  发布时间:2016/8/31 16:51:00
--  
问题搞掂了,谢谢!