以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]生成收支相抵的净值表(交叉表)(已解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=110205) |
||||
-- 作者:yyzlxc -- 发布时间:2017/11/28 21:29:00 -- [求助]生成收支相抵的净值表(交叉表)(已解决) 以下代码分别生成租金收入和租金支出交叉表,如何生成收支相抵的净值表(收入为正值,支出为负值)。请各位老师指教,谢谢!! 租金收入按钮代码 Dim k As New CrossTableBuilder("租金收入",DataTables("设备借用2")) k.HGroups.AddDef("设备名称") k.VGroups.AddDef("产权单位") k.Totals.AddDef("当月租金", "当月租金") k.Totals.AddDef("租金累计", "租金累计") k.HorizontalTotal = True k.VerticalTotal = True k.Build() MainTable = Tables("租金收入") Tables("租金收入").AutoSizeCols() With Tables("租金收入") CurrentTable.Cols("合计_当月租金").Move(1) CurrentTable.Cols("合计_租金累计").Move(2) End With 租金支出按钮代码 Dim k As New CrossTableBuilder("租金支出",DataTables("设备借用2")) k.HGroups.AddDef("设备名称") k.VGroups.AddDef("使用单位") k.Totals.AddDef("当月租金", "当月租金") k.Totals.AddDef("租金累计", "租金累计") k.HorizontalTotal = True k.VerticalTotal = True k.Filter = "使用单位 <> \'设备仓库\'" k.Build() MainTable = Tables("租金支出") Tables("租金支出").AutoSizeCols() With Tables("租金支出") CurrentTable.Cols("合计_当月租金").Move(1) CurrentTable.Cols("合计_租金累计").Move(2) End With
[此贴子已经被作者于2017/11/29 10:17:27编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2017/11/28 23:05:00 -- 1、参考:http://www.foxtable.com/webhelp/scr/2305.htm Dim k As New CrossTableBuilder("租金收入2",DataTables("表A")) k.HGroups.AddDef("设备名称") k.VGroups.AddDef("产权单位") k.Totals.AddDef("当月租金", "租金收入") k.Totals.AddDef("租金累计", "收入累计") k.HorizontalTotal = True k.VerticalTotal = True Dim dt1 As fxDataSource = k.BuildDataSource() Dim k2 As New CrossTableBuilder("租金支出",DataTables("表A")) k2.HGroups.AddDef("设备名称") k2.VGroups.AddDef("使用单位") k2.Totals.AddDef("当月租金", "租金支出") k2.Totals.AddDef("租金累计", "支出累计") k2.HorizontalTotal = True k2.VerticalTotal = True k2.Filter = "使用单位 <> \'设备仓库\'" Dim dt2 As fxDataSource = k2.BuildDataSource() Dim str() As String = {"设备名称","产权单位"} Dim str2() As String = {"设备名称","使用单位"} dt1.Combine("设备名称",dt2,"设备名称") \'将销售统计数据组合到进货统计数据 dt1.Show("租金收入2") With DataTables("租金收入2").DataCols \'用表达式列计算库存数据 .Add("合计净值",Gettype(Double), "IsNull([合计_租金收入],0) - ISNULL([合计_租金支出],0)") .Add("累计净值",Gettype(Double), "IsNull([合计_收入累计],0) - ISNULL([合计_支出累计],0)") End With 2、使用sql生成查询表,在交叉统计 Dim sql = "select 设备名称,单位,sum(当月租金) as 当月租金,sum(租金累计) as 租金累计 from( Select 设备名称,产权单位 as 单位,sum(iif(当月租金 is null,0,当月租金)) As 当月租金,sum(iif(租金累计 is null,0,租金累计)) As 租金累计 from {表A} group by 设备名称,产权单位 union all Select 设备名称,使用单位 As 单位,sum(iif(当月租金 Is null,0,当月租金)) * -1 As 当月租金,sum(iif(租金累计 Is null,0,租金累计)) * -1 As 租金累计 from {表A} where 使用单位 <> \'设备仓库\' group by 设备名称,使用单位) as a group by 设备名称,单位" Dim q As new QueryBuilder q.TableName = "净值" q.SelectString = sql q.Build() MainTable = Tables("净值") Dim k As New CrossTableBuilder("净值统计",DataTables("净值")) k.HGroups.AddDef("设备名称") k.VGroups.AddDef("单位") k.Totals.AddDef("当月租金", "当月租金") k.Totals.AddDef("租金累计", "租金累计") k.HorizontalTotal = True k.VerticalTotal = True k.Build() MainTable = Tables("净值统计") |
||||
-- 作者:yyzlxc -- 发布时间:2017/11/29 9:28:00 -- 谢谢蓝老师的指教,第二个方案符合实际需求,再次感谢蓝老师的指教。 在应用到项目时遇到问题,源表为外部表,执行以下代码时出错,如何解决,请各位老师指教,谢谢!! |
||||
-- 作者:有点甜 -- 发布时间:2017/11/29 9:55:00 -- 如果是sqlserver数据库,改成
Dim sql = "select 设备名称,单位,sum(当月租金) as 当月租金,sum(租金累计) as 租金累计 from ( Select 设备名称,产权单位 as 单位,sum(isnull(当月租金,0)) As 当月租金,sum(isnull(租金累计,0)) As 租金累计 from {表A} group by 设备名称,产权单位 union all Select 设备名称,使用单位 As 单位,sum(isnull(当月租金,0)) * -1 As 当月租金,sum(isnull(租金累计,0)) * -1 As 租金累计 from {表A} where 使用单位 <> \'设备仓库\' group by 设备名称,使用单位) as a group by 设备名称,单位"
|
||||
-- 作者:yyzlxc -- 发布时间:2017/11/29 10:17:00 -- 谢谢甜老师的指教,问题得到完美解决,再次衷心感谢!! |