Foxtable(狐表)用户栏目专家坐堂 → [求助]能否在交叉表的垂直分组列中增加列(已解决)


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

主题:[求助]能否在交叉表的垂直分组列中增加列(已解决)

帅哥哟,离线,有人找我吗?
狐狸爸爸
  41楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/21 17:16:00 [只看该作者]

您把代码和表达式完全混淆在一起了。

 

例如这行:

 

dr("人均加工费_" & j &) =" iif(dr("投工_" & j &)=0,null,dr("加工费_" & j &) "/" dr("投工_" & j &)"

 

应该是这样:

 

 

If  dr("投工_" & j) = 0 Then
    dr("人均加工费_" & j) =  Nothing
Else
   dr("人均加工费_" & j) = dr("加工费_" & j ) / dr("投工_" & j)
Next

 

还有dr变量应该赋值。

 

建议您先暂停一下,抽时间温习一下帮助,重使用指南部分开始温习。

[此贴子已经被作者于2011-7-21 17:16:32编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/7/21 17:28:00 [只看该作者]

Dim nf,s,sql As String
nf = e.Form.Controls("ComboBox2").Value
If nf Is Nothing Then
    MessageBox.Show("请在右侧选择生成报表的年份","提示")
    Return
End If
'根据年份生成临时表
sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工,Null as 人均加工费,Null As 环比  FROM {日报源表} WHERE Year(日期) = " & nf & " Group By 报表年月,日期,单位"
'根据临时表生成年度汇总表
Dim b As New CrossTableBuilder("年度汇总",sql)
b.HGroups.AddDef("单位")
b.VGroups.AddDef("报表年月")
b.Totals.AddDef("加工费")
b.Totals.AddDef("投工",AggregateEnum.Average,"月均人数")
b.Totals.AddDef("人均加工费",AggregateEnum.Average)
b.Totals.AddDef("环比",AggregateEnum.Average)
b.HorizontalTotal = True
b.VerticalTotal = True
b.Build()

Dim i,n As Integer
Dim t As Table = Tables("年度汇总")
i =(Tables("年度汇总").Cols.Count-5)/4
t.StopRedraw   '停止绘制表格

With t.DataTable.DataCols
    .Add("合计_年均人数", Gettype(Double),"[合计_投工]/" & i)
    .Add("年人均加工费", Gettype(Double),"iif(合计_年均人数 =0,Null,合计_加工费/合计_年均人数)")
    .Add("名次", Gettype(Integer))
End With

t.Cols.Remove("环比_1","合计_投工","合计_人均加工费","合计_环比")
For Each r As Row In T.Rows
    For n  = 1 To i
        If r("投工_" & n) <>  0 Then
            r("人均加工费_" & n) = r("加工费_" & n)/r("投工_" & n)
        End If
        If n> 1 AndAlso r("人均加工费_" & n-1) <>  0 Then
            r("环比_" & n)=r("人均加工费_" & n)/r("人均加工费_" & n-1)-1
        End If
    Next
Next

Dim drs As List(Of DataRow) = t.DataTable.Select("[单位] <> '合计'","年人均加工费 DESC")
For n  = 0 To drs.Count - 1 '遍历所有行
    If n > 0 AndAlso drs(n)("年人均加工费") = drs(n-1)("年人均加工费") Then '如果年人均加工费和上一行相同
        drs(n)("名次") = drs(n-1)("名次") '则排名等于上一行
    Else
        drs(n)("名次") = n + 1 '设置名次
    End If
Next
For Each dc As DataCol In  t.DataTable.DataCols
    If dc.name <> "单位" AndAlso dc.name <> "名次" Then
        s="0.00" & iif(dc.name.Indexof("环比")>-1,"%","")
        t.DataTable.DataCols(dc.Name).SetFormat(s)
    End  If
Next
t.Cols("单位").TextAlign = TextAlignEnum.Center
t.Cols("名次").TextAlign = TextAlignEnum.Center
t.AutoSizeCols()
t.ResumeRedraw   '恢复绘制表格
MainTable =t
Tables("年度汇总").Cols.Frozen = 1 '冻结一列
[此贴子已经被作者于2011-7-21 17:43:47编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/22 10:09:00 [只看该作者]

谢谢狐爸和don老师的热情帮助!

don老师的代码在项目中通过,没有出错的提示,但出现一个问题:

月均人数、人均加工费和环比列数据类型均为整数,如何调整为双精度小数。

对两位老师的帮助再次感谢!!

[此贴子已经被作者于2011-7-22 10:55:03编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/7/22 11:12:00 [只看该作者]

以下是引用yyzlxc在2011-7-22 10:09:00的发言:

谢谢狐爸和don老师的热情帮助!

don老师的代码在项目中通过,没有出错的提示,但出现一个问题:

月均人数、人均加工费和环比列数据类型均为整数,如何调整为双精度小数。

对两位老师的帮助再次感谢!!

這唯有問老六了:在FoxTable中是

双精度小数的列為何到了

SQL Server 2008數據源郤變為整數????


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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/22 11:13:00 [只看该作者]

内部表的双精度小数重定向到SQL server 2008后,变为正数?


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/7/22 11:22:00 [只看该作者]

以下是引用狐狸爸爸在2011-7-22 11:13:00的发言:

内部表的双精度小数重定向到SQL server 2008后,变为正数?

樓主的意思應該是:用42樓代碼:
如數據源是ACCE或內部表,統計表的數據列除名次外,其它都是

双精度小数

如數據源是

SQL server 2008

,統計表的數據列郤是整數!




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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/22 11:39:00 [只看该作者]

sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工,0.1-0.1 as 人均加工费,0.1- 0.1 As 环比 FROM {日报源表} WHERE Year(日期) = " & nf & " Group By 报表年月,日期,单位"
[此贴子已经被作者于2011-7-22 11:38:46编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/7/22 11:46:00 [只看该作者]

以下是引用狐狸爸爸在2011-7-22 11:39:00的发言:
sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工,0.1-0.1 as 人均加工费,0.1- 0.1 As 环比 FROM {日报源表} WHERE Year(日期) = " & nf & " Group By 报表年月,日期,单位"

這樣定義雙精呀,學習!


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


加好友 发短信
等级:七尾狐 帖子:1525 积分:10580 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2011/7/22 12:48:00 [只看该作者]

谢谢狐爸老师的再次帮助,已经解决了2列的双精度问题,还有一列(月均人数)设想将数据源表的投工列数据类型改成双精度,不知是否可行?再次谢谢狐爸和don两位老师。

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/7/22 12:50:00 [只看该作者]

以下是引用狐狸爸爸在2011-7-22 11:39:00的发言:
sql = "Select 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工,0.1-0.1 as 人均加工费,0.1- 0.1 As 环比 FROM {日报源表} WHERE Year(日期) = " & nf & " Group By 报表年月,日期,单位"
[此贴子已经被作者于2011-7-22 11:38:46编辑过]

 

居然有这么个用法啊。


 回到顶部
总数 51 上一页 1 2 3 4 5 6 下一页