以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  按年统计的时候是对的 但是复制到按月统计的时候就报错了 这是为什么呢  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=30712)

--  作者:keeryq
--  发布时间:2013/4/2 14:38:00
--  按年统计的时候是对的 但是复制到按月统计的时候就报错了 这是为什么呢

为什么有错误呢?

 \'--------------------------------生成统计表--------------------------\'
    Dim g As New CrossTableBuilder("统计表1", DataTables("课程信息"), "[培训时间] >= #1/1/" & e.sender.value & "# And [培训时间]  <= #12/31/" & e.sender.value & "#")
    g.HGroups.AddDef("培训时间", "月")
    g.VGroups.AddDef("课程")
    g.Totals.AddDef("人天统计", "人天统计")
    g.Totals.AddDef("实际人数", "实际人数")
    g.VerticalProportion = True
    g.VerticalProporti      \'交叉统计数据分析
    g.Filter = "[培训时间] >= #1/1/" & e.sender.value & "# And [培训时间]  <= #12/31/" & e.sender.value & "#"
    g.Build()
   
    \'-----------------------------------生成图表----------------------
    Dim Chart As WinForm.Chart \'定义一个图表变量
    Dim Series As WinForm.ChartSeries \'定义一个图系变量
    Dim t As Table = Tables("统计表1") \'定义一个变量t引用数据表
    Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
    Chart.SeriesList.Clear()
    Chart.ChartType = ChartTypeEnum.Bar \'图表类型改为Bar(条形)
    Chart.DataSource = "统计表1" \'设置绑定表
    chart.AxisX.Major = 1
    Chart.AxisY.Major = 100
    Chart.AxisY.Min = 0 \'指定Y轴的最小值
   
   
    For Each c As Col In t.Cols
        If c.Caption.Contains("实际人数/")  Then
            c.Visible = False
        End If
        c.DataCol.SetFormat("#,###")
    Next
   
   
    For Each r As Row In t.Rows
        For Each c As Col In t.Cols
            If c.Caption.Contains("人天统计/")  Then
                r(c.name) =t(r.Index,c.Index-1)/t(r.Index,c.Index-3)
            End If
        Next
    Next
    For Each c As Col In t.Cols
        If c.Name <> "年" Then
            If c.Visible = True Then
                Series = Chart.SeriesList.Add() \'增加一个图系
                Series.Text = c.Caption    \'Name \'设置图系的标题
                Series.X.DataField = "年" \'X轴绑定到产品列
                Series.Y.DataField = c.Name \'设置Y轴的绑定列
                Series.DataLabelText = "{#YVAL}"
            End If
        End If
    Next
    \'Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮
    Chart.LegendVisible = True \'显示图列
    Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
    ChaRT.HeaderText = "实际人数-人天统计"
    Chart.AxisX.Text = "月份"


此主题相关图片如下:按月统计出错了.png
按此在新窗口浏览图片
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:练习.table


--  作者:Bin
--  发布时间:2013/4/2 14:42:00
--  
因为你有某一个列 列名为空。。
--  作者:keeryq
--  发布时间:2013/4/2 14:54:00
--  回复:(Bin)因为你有某一个列 列名为空。。

这个代码跟按年统计的代码一样的呀 只是多了筛选时间的条件!也不知道哪个列少呢


--  作者:狐狸爸爸
--  发布时间:2013/4/2 15:06:00
--  

学会自己分析,找出是哪一行代码出错吗,然后分析原因,不能太依赖官方工程师:

 

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

 


--  作者:keeryq
--  发布时间:2013/4/2 15:24:00
--  回复:(狐狸爸爸)学会自己分析,找出是哪一行代码出...

您说的有道理呀 但是这是我自己分析了一周还没分析出来啊!所以才来论坛问呀。来论坛问肯定是我没分析出来的呢,我自己分析出来的都已经自己解决了!!!


--  作者:狐狸爸爸
--  发布时间:2013/4/2 16:07:00
--  

你真的按照4楼的方法分析了的话,那么就已经知道哪一行的代码出问题了。

 

 

 For Each r As Row In t.Rows
        For Each c As Col In t.Cols
            If c.Caption.Contains("人天统计/")  Then
                r(c.name) =t(r.Index,c.Index-1)/t(r.Index,c.Index-3)
            End If
        Next
  Next

 

遍历列,如果这一列是第一列,0-3 =  -3, 存在位置为-3的列吗?

 

逻辑问题。

[此贴子已经被作者于2013-4-2 16:07:01编辑过]

--  作者:keeryq
--  发布时间:2013/4/2 16:19:00
--  回复:(狐狸爸爸)你真的按照4楼的方法分析了的话,那...

我有改过这里的 一个-2 一个-4更不行 又改0 2 只是瞎改的  找表1也没确定是怎么排序的


--  作者:keeryq
--  发布时间:2013/4/2 17:15:00
--  回复:(muhua)'r(c.name) =t(r.Index,c.Index-1)/t(...

像是这样做出来图表不显示,但怎么感觉像是这样做出来的只是一组数据呀

按年和按月是一样的程序呀 只不过按月是要按年筛选过的,我没运行一次程序就看看统计表1

然后把程序改成 r(c.name) =t(r.Index,c.Index-1)/t(r.Index,c.Index+1) 没有错误了就是不显示出数据

 

 


此主题相关图片如下:按年.png
按此在新窗口浏览图片

此主题相关图片如下:按年筛选后.png
按此在新窗口浏览图片

此主题相关图片如下:按月.png
按此在新窗口浏览图片

--  作者:keeryq
--  发布时间:2013/4/2 17:27:00
--  回复:(muhua)'r(c.name) =t(r.Index,c.Index-1)/t(...

哦啦 找到原因了 谢谢呀 还是用的-1和+1  没显示主要是里面的写错了!最然不明白为什么一样的代码为什么一个-1、-3和-1、+1 但是已经解决啦 还是谢谢你呀  谢谢!!!