以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  多表统计问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81268)

--  作者:douglas738888
--  发布时间:2016/2/23 12:44:00
--  多表统计问题
老师,看看,我的代码哪里错了,不显示统计

两个表都具有同名列的

Dim sql As String = "Select {销售部工资}.部门名称,实发工资,日期,{产品部工资}.部门名称,实发工资,日期 F ROM {销售部工资} INNER JOIN  {产品部工资} ON {销售部工资}.日期 = {产品部工资}.日期"
Dim b As New CrossTableBuilder("统计表1001",sql, "User") 
b.HGroups.AddDef("部门名称")
b.VGroups.AddDef("日期","{0}月")
b.Totals.AddDef("实发工资") 
b.Filter = "日期 >= #" & e.Form.Controls("DateTimePicker9").Value & "# And 日期 <= #" & e.Form.Controls("DateTimePicker10").Value & "#"
b.HorizontalTotal = True
b.VerticalTotal = True
Tables("工资统计_Table9").DataSource = b.BuildDataSource()

我想实现的是无关联的多个工资表同名列,按日期组合统计实发工资月合计
例如:
部门名称   1月  2月   3月.....
销售部      100 150  100
产品部      200  230  210
[此贴子已经被作者于2016/2/23 14:28:30编辑过]

--  作者:大红袍
--  发布时间:2016/2/23 14:34:00
--  

改一下

 

Dim sql As String = "Select 部门名称,实发工资,日期 F ROM {销售部工资} un ion all Select 部门名称,实发工资,日期 F rom {产品部工资}"


--  作者:douglas738888
--  发布时间:2016/2/23 15:23:00
--  
谢谢老师,问题也解决,另外,我在设置小数点2位的时候,不知道这种形式的统计怎么取数值列名

DataTables("工资统计_Table9").DataCols(" ").SetFormat("#0.00")  

用“日期”,“1月”,“01月”,“实际工资”作为列名,都不对,老师,这句代码的列名应该是什么


DataTables("工资统计_Table9").DataCols("合计").SetFormat("#0.00")    合计能实现例如12344.00  这句代码设置是对的
[此贴子已经被作者于2016/2/23 15:24:05编辑过]

--  作者:大红袍
--  发布时间:2016/2/23 15:25:00
--  

生成以后,你查看一下表结构即可看到列名

 

http://www.foxtable.com/help/topics/0193.htm

 

你看到那些不是列名,而是列标题。


--  作者:douglas738888
--  发布时间:2016/2/24 10:15:00
--  
老师,还得再请教一下,实际列名的问题,我已找到,我要在每列设置SetFormat("#0.00") 的时候,

比如现在是2016年1月和2月是有数据可以设置0.00的,但2016年3月以后的月份还没有到,提前设置如:
DataTables("工资统计_Table9").DataCols("实发工资_3").SetFormat("#0.00")  
DataTables("工资统计_Table9").DataCols("实发工资_4").SetFormat("#0.00")  
DataTables("工资统计_Table9").DataCols("实发工资_5").SetFormat("#0.00")  
......

因为还没有数据生成列,是会报错的,这种问题怎样解决  用TotalOn的方式吗,还是...

--  作者:大红袍
--  发布时间:2016/2/24 10:28:00
--  
For Each c As Col In Tables("工资统计_Table9").cols
    If c.name Like "实发工资_*" Then
        c.DataCol.SetFormat("#0.00")
    End If
Next