以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按时间段求和  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=169363)

--  作者:admin22327
--  发布时间:2021/6/13 17:17:00
--  按时间段求和
现在国家小规模纳税人人按季度纳税,个人所得税按年度缴纳,季度预交,我有一个表,需要通过代码动态计算每个季度的收入合计和每个年度截止每个季度末的累计收入,这个代码怎么写呢。谢谢
图片点击可在新窗口打开查看此主题相关图片如下:123456.png
图片点击可在新窗口打开查看
,要求分客户计算
[此贴子已经被作者于2021/6/13 20:15:37编辑过]

--  作者:有点蓝
--  发布时间:2021/6/13 20:27:00
--  
参考:http://www.foxtable.com/webhelp/topics/2964.htm

Dim b As New SQLGroupTableBuilder("统计表1","xx表")
b
.Groups.AddDef("客户")
b.Groups.AddDef("年度")
b
.Totals.AddExp("1季度","iif(月份=1 or 月份=2 or 月份=3,金额,0)")
b.Totals.AddExp("2季度","iif(月份=3 or 月份=4 or 月份=5,金额,0)")
……
b.build()
MainTable
 = Tables("统计表1")

--  作者:admin22327
--  发布时间:2021/6/14 7:27:00
--  
统计结果直接写入当前表右边的当前行,然后用当前行的的累计数—上行的累计数写入另外一列的当前行,代码怎么写,谢谢老师
[此贴子已经被作者于2021/6/14 8:22:21编辑过]

--  作者:有点蓝
--  发布时间:2021/6/14 21:07:00
--  
参考:http://www.foxtable.com/webhelp/topics/2136.htm
--  作者:admin22327
--  发布时间:2021/6/15 0:46:00
--  

根据您提供的意见,我做了,累计数可以做出来,但是我要计算第二季的累计,第三季度的累计时,需要加入[日期]>#04/01/2021#and [日期]<#6/30/2021#这样一个判断不知道该怎么加,谢谢

Select  Case e.DataCol.Name
     Case "金额"
         Dim dr As  DataRow
         Dim drs As List(of DataRow)
         dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") \'找出上一行
        If dr Is Nothing  Then  \'如果没有找到上一行,说明本行就是第一行
            e.DataRow("本季累计") = e.DataRow("金额")
             dr = e.DataRow
         End If
         drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"),  "[_SortKey]")
         For i  As  Integer =  1  To drs.Count -  1  \'重算余下行的余额
            drs(i)("本季累计") = drs(i-1)("本季累计") + drs(i)("金额")
         Next   
 End  Select

感谢


--  作者:有点蓝
--  发布时间:2021/6/15 8:40:00
--  
比如

dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey") & “ and 年度=” & e.DataRow("_SortKey") & “ and 月份 in (4,5,6)”, "[_SortKey] Desc") \'找出上一行