以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]跨表统计某列的和  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123351)

--  作者:wendude
--  发布时间:2018/8/13 8:14:00
--  [求助]跨表统计某列的和
如附件:
1.在增效奖励余额表中的【增效工资投入额】的列中调取 表 增效投入明细表 中当月部门的增效总额合计。
2.想实现表达式 奖励余额= 考勤扣款返款 +内部承包费-阿米巴优秀配套奖励资金1,其中如何设置考勤扣款返款、内部承包费、阿米巴优秀配套奖励资金1没有填写时计算时默认为0值。

请问上述问题代码如何写,如何实现,谢谢
[此贴子已经被作者于2018/8/13 9:09:16编辑过]

--  作者:有点甜
--  发布时间:2018/8/13 8:53:00
--  

1、附件请发上来;

 

2、跨表统计参考 http://www.foxtable.com/webhelp/scr/1472.htm

 

3、表达式列不计算? http://www.foxtable.com/webhelp/scr/0602.htm

 


--  作者:wendude
--  发布时间:2018/8/13 10:03:00
--  [求助]
看了提示,已经完成上述问题,还有就是如何筛选出截止目前某一年度最大的月份?谢谢
--  作者:wendude
--  发布时间:2018/8/13 11:21:00
--  
请问怎么实现调用最大的月份数值?
--  作者:有点甜
--  发布时间:2018/8/13 11:41:00
--  
以下是引用wendude在2018/8/13 10:03:00的发言:
看了提示,已经完成上述问题,还有就是如何筛选出截止目前某一年度最大的月份?谢谢

 

你需要这个? http://www.foxtable.com/webhelp/scr/2720.htm

 


--  作者:wendude
--  发布时间:2018/8/13 12:01:00
--  
不是,我就是想调用【月份】列中的最大值,怎么实现
--  作者:wendude
--  发布时间:2018/8/13 12:10:00
--  
Select Case e.DataCol.Name
    Case "部门","年份"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow

        If dr.IsNull("部门") OrElse dr.IsNull("年份")  Then
            dr("本年累计余额") = Nothing
            dr("累计总余额") = Nothing
        Else
            Dim filter As String
            filter = "部门 = \'" & dr("部门") & "\' And 年份 = \'" & dr("年份") & "\'"
            pr = DataTables("部门余额明细表").Find(filter)
            If pr IsNot Nothing Then
                \'dr("截止年月") = pr("月份")
dr("本年累计余额") = DataTables("部门余额明细表").Compute("Sum(月余额)", filter)
dr("累计总余额") = DataTables("部门余额明细表").Compute("Sum(总余额)", filter)
dr("截止年月") = DataTables("部门余额明细表").Compute("Max(" & pr("月份") & ")")
\'dr("截止年月") = dt.Compute("Max(" & pr("月份") & ")")

            End If
        End If
End Select


运行这个代码提示:

.NET Framework 版本:2.0.50727.8789
Foxtable 版本:2017.10.26.1
错误所在事件:表,部门总余额累计汇总表,DataColChanged
详细错误信息:
调用的目标发生了异常。
聚合参数中的语法错误: 需要具有可能的“Child”限定符的单个列参数。
错误代码在:
dr("截止年月") = DataTables("部门余额明细表").Compute("Max(" & pr("月份") & ")")


--  作者:wendude
--  发布时间:2018/8/13 12:10:00
--  
如上
--  作者:有点甜
--  发布时间:2018/8/13 12:22:00
--  

这个意思?

 

dr("截止年月") = DataTables("部门余额明细表").Compute("Max(月份)")

 

截图说明表结构,或者做个例子发上来测试。


--  作者:wendude
--  发布时间:2018/8/13 12:45:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:部门余额明细表.png
图片点击可在新窗口打开查看



图片点击可在新窗口打开查看此主题相关图片如下:部门总余额累计汇总表.png
图片点击可在新窗口打开查看

想实现的功能:
在表部门总余额累计汇总表中,当输入部门、年份后,其截止年月的列自动调用部门余额明细表中当年的最后月份。
怎么调用,就是调用一下另一张表的最后月份。

我写的代码:
Select Case e.DataCol.Name
    Case "部门","年份"
        Dim dr As DataRow = e.DataRow
        Dim pr As DataRow

        If dr.IsNull("部门") OrElse dr.IsNull("年份")  Then
            dr("本年累计余额") = Nothing
            dr("累计总余额") = Nothing
        Else
            Dim filter As String
            filter = "部门 = \'" & dr("部门") & "\' And 年份 = \'" & dr("年份") & "\'"
            pr = DataTables("部门余额明细表").Find(filter)
            If pr IsNot Nothing Then
                \'dr("截止年月") = pr("月份")
dr("本年累计余额") = DataTables("部门余额明细表").Compute("Sum(月余额)", filter)
dr("累计总余额") = DataTables("部门余额明细表").Compute("Sum(总余额)", filter)
dr("截止年月") = DataTables("部门余额明细表").Compute("Max(" & pr("月份") & ")")
\'dr("截止年月") = dt.Compute("Max(" & pr("月份") & ")")

            End If
        End If
End Select

报错:
.NET Framework 版本:2.0.50727.8789
Foxtable 版本:2017.10.26.1
错误所在事件:表,部门总余额累计汇总表,DataColChanged
详细错误信息:
调用的目标发生了异常。
聚合参数中的语法错误: 需要具有可能的“Child”限定符的单个列参数。
[此贴子已经被作者于2018/8/13 12:46:49编辑过]