以文本方式查看主题

-  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


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


[此贴子已经被作者于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
--  
谢谢蓝老师的指教,第二个方案符合实际需求,再次感谢蓝老师的指教。

在应用到项目时遇到问题,源表为外部表,执行以下代码时出错,如何解决,请各位老师指教,谢谢!!


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




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



--  作者:有点甜
--  发布时间: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
--  
谢谢甜老师的指教,问题得到完美解决,再次衷心感谢!!