以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按照另一个表开始、截止日期统计年度  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124956)

--  作者:cd_tdh
--  发布时间:2018/9/17 11:04:00
--  按照另一个表开始、截止日期统计年度

老师,分组统计里面怎么按照另外一个表的合同年度的起之日来统计呢?


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

 

或是根据分支机构管理里面的合同起止日期来统计中标统计表里面的起止日期内每一年的中标金额?

比如:河南分公司:统计出2016年是2016-08-01至2017-07-31,2017年是统计2017-08-01至2018-07-31的2018年统计2018-08-01-今天的。

[此贴子已经被作者于2018/9/17 16:57:00编辑过]

--  作者:有点甜
--  发布时间:2018/9/17 11:22:00
--  

方法一:加入【年度】列,跨表查找某条数据属于哪个年份。然后根据【年度】统计。

 

方法二:那就必须自己编写代码统计了,在统计过程中查找日期年份范围。

 

http://www.foxtable.com/webhelp/scr/2394.htm

 


--  作者:cd_tdh
--  发布时间:2018/9/17 12:26:00
--  

老师,用你说的方法二判断属于哪个年度怎么写呢?做了个示例,请老师看看。

 

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


--  作者:有点甜
--  发布时间:2018/9/17 12:43:00
--  

参考

 

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("所属机构", Gettype(String), 16)
dtb.AddDef("年", Gettype(Integer))
dtb.AddDef("金额", Gettype(Double))
dtb.Build()
Dim minyear = 2015
Dim maxyear = 2018
For Each nm As String In DataTables("表B").GetValues("所属机构")
    Dim fdr = DataTables("表A").find("所属机构=\'" & nm & "\'")
    For i As Integer = minyear To maxyear
        Dim dr As DataRow = DataTables("统计").AddNew()
        dr("所属机构") = nm
        dr("年") = i
        Dim d1 As Date = fdr("起始日期")
        d1 = new Date(i, d1.month, d1.Day)
       
        Dim d2 As Date = fdr("截止日期")
        d2 = new Date(i+1, d2.month, d2.Day)
        Dim filter As String = "所属机构=\'" & nm & "\' and 中标日期>=#" & d1 & "# and 中标日期<=#" & d2 & "#"
        msgbox(filter)
        dr("金额") = DataTables("表B").Compute("Sum(中标金额)",filter)
    Next
Next
MainTable= Tables("统计")


--  作者:cd_tdh
--  发布时间:2018/9/17 14:16:00
--  

老师,sqlTable不能基于多个表用Select语句生成哇?我直接生成查询表没问题。

 

Select {分支机构管理}.所属机构,承包合同_起始日期,承包合同_到期日期,项目名称,中标日期,中标金额,datediff(yyyy,承包合同_起始日期,中标日期)+year(承包合同_起始日期) As 统计年份 Fro m {分支机构管理} Inner JOIN {中标统计} ON {中标统计}.[所属机构] = {分支机构管理}.[所属机构]

[此贴子已经被作者于2018/9/17 14:16:47编辑过]

--  作者:有点甜
--  发布时间:2018/9/17 14:21:00
--  

sqlTable只能一个单表;sqlQuery可以多表。


--  作者:cd_tdh
--  发布时间:2018/9/17 14:39:00
--  
sqlQuery还能在分页不啊?我在分页不对。
--  作者:有点甜
--  发布时间:2018/9/17 14:42:00
--  
以下是引用cd_tdh在2018/9/17 14:39:00的发言:
sqlQuery还能在分页不啊?我在分页不对。

 

参考这种方式分页 http://www.foxtable.com/webhelp/scr/2721.htm

 

合成对应的sql语句,然后重新fill才行。


--  作者:cd_tdh
--  发布时间:2018/9/17 14:51:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:7777.png
图片点击可在新窗口打开查看
统计年份怎么让他显示{机构名称} {0}年度小计,前面在现实一个:统计的机构名称?
[此贴子已经被作者于2018/9/17 14:53:59编辑过]

--  作者:有点甜
--  发布时间:2018/9/17 14:54:00
--  

如果你需要这样的标题,你需要的是交叉统计?

 

http://www.foxtable.com/webhelp/scr/0165.htm

 

不然,你这样做肯定是不对的,因为年度统计列,显示的是多个机构的数据。