以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多表时间段数据查询或统计如何做? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=32339) |
-- 作者:zerov -- 发布时间:2013/4/29 22:58:00 -- 多表时间段数据查询或统计如何做? 三个表,《剩余资金》=《回款》-《费用》,窗口中有2个DateTimePicker,分别为“起始日”和“截止日”控件,如果控件值为空,则统计所有日期的回款和费用,得出剩余资金。如果 “起始日”和“截止日”设定了日期,则按设置的日期期间分别统计所有分公司的回款与费用,并得出剩余资金。 不设日期的统计代码如下,怎样加入日期段的筛选fiter? 1、回款
|
-- 作者:zerov -- 发布时间: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 -- 发布时间:2013/5/1 21:20:00 -- 有大师回家了没? |
-- 作者:sloyy -- 发布时间:2013/5/1 22:12:00 -- 有测试数据吗?我来试试 |
-- 作者:sloyy -- 发布时间: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 {回款}.分公司 |