Foxtable(狐表)用户栏目专家坐堂 → 多表时间段数据查询或统计如何做?


  共有5711人关注过本帖树形打印复制链接

主题:多表时间段数据查询或统计如何做?

帅哥哟,离线,有人找我吗?
zerov
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
多表时间段数据查询或统计如何做?  发帖心情 Post By:2013/4/29 22:58:00 [只看该作者]

三个表,《剩余资金》=《回款》-《费用》,窗口中有2个DateTimePicker,分别为“起始日”和“截止日”控件,如果控件值为空,则统计所有日期的回款和费用,得出剩余资金。如果起始日”和“截止日”设定了日期,则按设置的日期期间分别统计所有分公司的回款与费用,并得出剩余资金。
不设日期的统计代码如下,怎样加入日期段的筛选fiter?
1、回款

图片点击可在新窗口打开查看此主题相关图片如下:hk.png
图片点击可在新窗口打开查看
2、费用

图片点击可在新窗口打开查看此主题相关图片如下:fy.png
图片点击可在新窗口打开查看
3、最终效果
图片点击可在新窗口打开查看此主题相关图片如下:1111.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
zerov
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
  发帖心情 Post By:2013/4/29 23:02:00 [只看该作者]

这是表中datachanged的代码,但每个分公司得一个一个设置日期时间段,如果要在窗口改成统一的时间段,如何弄:

Select e.DataCol.Name
    Case "分公司","期间_起始日","期间_截止日"
        If e.DataRow.IsNull("分公司") = False AndAlso e.DataRow.IsNull("期间_起始日") = False AndAlso e.DataRow.IsNull("期间_截止日") = False Then
            e.DataRow("回款_其它老") = DataTables("回款").Compute("sum(回款金额)","分公司='" & e.DataRow("分公司") & "' and 日期 > #" & e.DataRow("期间_起始日") & "# and 日期 < #" & e.DataRow("期间_截止日") & "# and 收款方式 <> '承兑' and 类型 = '老'")
            e.DataRow("回款_其它新") = DataTables("回款").Compute("sum(回款金额)","分公司='" & e.DataRow("分公司") & "' and 日期 > #" & e.DataRow("期间_起始日") & "# and 日期 < #" & e.DataRow("期间_截止日") & "# and 收款方式 <> '承兑' and 类型 = '新'")
            e.DataRow("回款_承兑老") = DataTables("回款").Compute("sum(回款金额)","分公司='" & e.DataRow("分公司") & "' and 日期 > #" & e.DataRow("期间_起始日") & "# and 日期 < #" & e.DataRow("期间_截止日") & "# and 收款方式 = '承兑' and 类型 = '老'")
            e.DataRow("回款_承兑新") = DataTables("回款").Compute("sum(回款金额)","分公司='" & e.DataRow("分公司") & "' and 日期 > #" & e.DataRow("期间_起始日") & "# and 日期 < #" & e.DataRow("期间_截止日") & "# and 收款方式 = '承兑' and 类型 = '新'")
            e.DataRow("回款_小计") = e.DataRow("回款_其它老") + e.DataRow("回款_其它新") + e.DataRow("回款_承兑老") + e.DataRow("回款_承兑新")
            e.DataRow("费用_经理往来") = DataTables("费用").Compute("sum(支出金额)","分公司='" & e.DataRow("分公司") & "' and 日期 > #" & e.DataRow("期间_起始日") & "# and 日期 < #" & e.DataRow("期间_截止日") & "# and 费用类型 = '经理借款'")
            e.DataRow("费用_劳务支付") = DataTables("费用").Compute("sum(支出金额)","分公司='" & e.DataRow("分公司") & "' and 日期 > #" & e.DataRow("期间_起始日") & "# and 日期 < #" & e.DataRow("期间_截止日") & "# and 费用类型 = '劳务往来'")
            e.DataRow("费用_内部往来") = DataTables("费用").Compute("sum(支出金额)","分公司='" & e.DataRow("分公司") & "' and 日期 > #" & e.DataRow("期间_起始日") & "# and 日期 < #" & e.DataRow("期间_截止日") & "# and 费用类型 = '内部往来'")
            e.DataRow("费用_小计") = e.DataRow("费用_经理往来") + e.DataRow("费用_劳务支付") + e.DataRow("费用_内部往来")
            e.DataRow("剩余可支配金额") = e.DataRow("回款_小计") - e.DataRow("费用_小计")
            e.DataRow("备注") = Nothing
        Else
            e.DataRow("回款_其它老") = Nothing
            e.DataRow("回款_其它新") = Nothing
            e.DataRow("回款_承兑老") = Nothing
            e.DataRow("回款_承兑新") = Nothing
            e.DataRow("回款_小计") = Nothing
            e.DataRow("费用_经理往来") = Nothing
            e.DataRow("费用_劳务支付") = Nothing
            e.DataRow("费用_内部往来") = Nothing
            e.DataRow("费用_小计") = Nothing
            e.DataRow("剩余可支配金额") = Nothing
            e.DataRow("备注") = Nothing
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
zerov
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:867 积分:6210 威望:0 精华:0 注册:2012/11/24 20:44:00
  发帖心情 Post By:2013/5/1 21:20:00 [只看该作者]

有大师回家了没?

 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2013/5/1 22:12:00 [只看该作者]

有测试数据吗?我来试试

 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2013/5/1 23:44:00 [只看该作者]

查询表:剩余资金SQL语句

select {回款}.分公司,sum(iif(类型='新' and 收款方式<>'承兑' ,回款金额,0)) As  回款_其他新,sum(iif(类型='旧' and 收款方式<>'承兑' ,回款金额,0)) As  回款_其他旧,sum(iif(类型='新' and 收款方式='承兑' ,回款金额,0)) As  回款_承兑新,sum(iif(类型='旧' and 收款方式='承兑' ,回款金额,0)) As  回款_承兑旧, sum(回款金额) As 回款_小计, sum(iif({费用}.费用类型='经理往来',支出金额,0)) As  费用_经理往来, sum(iif({费用}.费用类型='劳务支付',支出金额,0)) As  费用_劳务支付,sum(iif({费用}.费用类型='内部往来',支出金额,0)) As  费用_内部往来,sum(支出金额) As  费用_小计,(sum(回款金额)-sum(支出金额)) as 剩余资金 from {回款} INNER JOIN {费用}  on {回款}.分公司 = {费用}.分公司   where {回款}.日期 BETWEEN #起始日# and #截止日# GrouP by {回款}.分公司


 回到顶部