以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]代码出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12214)

--  作者:yyzlxc
--  发布时间:2011/8/26 9:21:00
--  [求助]代码出错
 
在一段代码中加了四条代码,用于计算月人均加工费的值,但运行出错,应该怎样改,请各位老师指教,谢谢!!

\'按月分析

Dim sql As String

If _UserGroup = "填报" Then \'定义用户组

    sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} WHERE 单位 = \'" & _UserName & "\' Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"

Else

    sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"

End If

Dim b As New GroupTableBuilder("按月分析",sql,"SCGL")

b.Groups.AddDef("日期", DateGroupEnum.Year, "年")

b.Groups.AddDef("日期", "月")

b.Groups.AddDef("单位")

b.Totals.AddDef("加工费")

b.Totals.AddDef("投工",AggregateEnum.Average,"月均人数")

b.Totals.AddDef("月人均加工费" ,AggregateEnum.Average)

b.SamePeriodGrowth = True      \'同比

b.CircleGrowth = True           \'环比

b.Build()

MainTable = Tables("按月分析")

Dim r As Table = Tables("按月分析")

If r("月均人数" ) <> 0 Then

    r("月人均加工费" ) = r("加工费" )/r("月均人数" )

End If

DataTables("按月分析").DataCols("加工费").SetFormat("0.00")

DataTables("按月分析").DataCols("月均人数").SetFormat("0.00")

DataTables("按月分析").DataCols("月人均加工费").SetFormat("0.00")

Tables("按月分析").Cols("年").TextAlign = TextAlignEnum.Center

Tables("按月分析").Cols("月").TextAlign = TextAlignEnum.Center

Tables("按月分析").Cols("单位").TextAlign = TextAlignEnum.Center

Tables("按月分析").AutoSizeCols()

\'打开表返回最末行

With Tables("按月分析")

    .Position = .Rows.Count - 1

End With

 

 

 


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

--  作者:狐狸爸爸
--  发布时间:2011/8/26 9:29:00
--  

你这点代码错得离谱了:

 

Dim r As Table = Tables("按月分析")
If r("月均人数" ) <> 0 Then
    r("月人均加工费" ) = r("加工费" )/r("月均人数" )
End If
 
我想应该是:

 

For Each r As Row in Tables("按月分析").Rows
      If r("月均人数" ) <> 0 Then
          r("月人均加工费" ) = r("加工费" )/r("月均人数" )
      End If

Next


 


--  作者:yyzlxc
--  发布时间:2011/8/28 12:10:00
--  

谢谢狐爸老师的指教,代码修改好,也能执行,但是月人均加工费的同比和环比是空白,根据代码分析,在运算同比和环比时,月人均加工费还是空的,如何将同比和环比的运算,延迟到月人均加工费结果出来以后执行,请各位老师指教。谢谢!!

代码如下:

\'按月分析
Dim sql As String
If _UserGroup = "填报" Then \'定义用户组
    sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} WHERE 单位 = \'" & _UserName & "\' Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
Else
    sql = "Select TOP 100 PERCENT 报表年月,日期,单位,Sum(加工费) As 加工费,Sum(投工) As 投工, Null as 月人均加工费 FROM {日报源表} Group By 报表年月,日期,单位 ORDER BY 单位,日期,报表年月"
End If
Dim b As New GroupTableBuilder("按月分析",sql,"SCGL")
b.Groups.AddDef("日期", DateGroupEnum.Year, "年")
b.Groups.AddDef("日期", "月")
b.Groups.AddDef("单位")
b.Totals.AddDef("加工费")
b.Totals.AddDef("投工",AggregateEnum.Average,"月均人数")
b.Totals.AddDef("月人均加工费" )
b.SamePeriodGrowth = True      \'同比
b.CircleGrowth = True           \'环比
b.Build()
MainTable = Tables("按月分析")
For Each r As Row In Tables("按月分析").Rows
      If r("月均人数" ) <> 0 Then
          r("月人均加工费" ) = r("加工费" )/r("月均人数" )
      End If
Next
DataTables("按月分析").DataCols("加工费").SetFormat("0.00")
DataTables("按月分析").DataCols("月均人数").SetFormat("0.00")
DataTables("按月分析").DataCols("月人均加工费").SetFormat("0.00")
Tables("按月分析").Cols("年").TextAlign = TextAlignEnum.Center
Tables("按月分析").Cols("月").TextAlign = TextAlignEnum.Center
Tables("按月分析").Cols("单位").TextAlign = TextAlignEnum.Center
Tables("按月分析").AutoSizeCols()
\'打开表返回最末行
With Tables("按月分析")
    .Position = .Rows.Count - 1
End With

[此贴子已经被作者于2011-8-28 13:47:57编辑过]

--  作者:yyzlxc
--  发布时间:2011/8/29 8:29:00
--  
能不能实现月人均加工费的同比和环比?请狐爸老师指教,谢谢!!
--  作者:狐狸爸爸
--  发布时间:2011/8/29 8:35:00
--  
手工增加一列,手工编码进行环比和同比的计算机可
--  作者:yyzlxc
--  发布时间:2011/8/29 8:49:00
--  

在帮助中是否有参考的章节。


--  作者:狐狸爸爸
--  发布时间:2011/8/29 8:51:00
--  

这个没有,其实源流不复杂,环比就是同统计表找出上月的数据,和本月的数据一起计算出环比,然后写入新增加的列中。

 

 

增加列参考:

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

 

 


--  作者:yyzlxc
--  发布时间:2011/8/29 9:00:00
--  
最好能搞一个范例,可以为初学者拓展思路,只是一个想法而已,请狐爸老师别见怪。谢谢狐爸老师。