Foxtable(狐表)用户栏目专家坐堂 → 交叉统计汇总行出现小数溢出


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

主题:交叉统计汇总行出现小数溢出

帅哥哟,离线,有人找我吗?
易服
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
交叉统计汇总行出现小数溢出  发帖心情 Post By:2010/8/26 16:51:00 [显示全部帖子]

交叉统计汇总行出现小数溢出(分组统计不会)。有什么办法?


图片点击可在新窗口打开查看此主题相关图片如下:2010-8-26 16-34-15.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2010-8-26 16:51:43编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/26 17:20:00 [显示全部帖子]

是外部数据的做例子比较麻烦,不用红色部分就不会出现小数溢出,代码如下:

Dim g As New CrossTableBuilder("交叉统计", DataTables("总览"))
g.HGroups.AddDef("乡名")
g.VGroups.AddDef("造林年度","{0}年_总面积")
g.Totals.AddDef("保存面积","总面积")
g.HorizontalTotal = True
g.VerticalTotal = True

g.HorizontalProportion = True
g.VerticalProportion = True
g.Build()
MainTable = Tables("交叉统计")
Tables("交叉统计").Sort = "合计 DESC" '降序
Tables("交叉统计").AutoSizeCols()  '自动列宽
Tables("交叉统计").Cols.Frozen = 2  '冻结前二列


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/26 18:04:00 [显示全部帖子]

有近13M传不了,已经发到你的信箱hehui@datasoft.com.cn


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/27 8:39:00 [显示全部帖子]

以下是引用狐狸爸爸在2010-8-27 8:11:00的发言:

谢了,17.8兆,确实很大,以后没有必要传整个系统,导出此表,保留少量能体现此错误的数据即可,压缩后传。

之所以完整上传是为了你测试,难道小数溢出与数据源有关系吗?


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/27 9:27:00 [显示全部帖子]

为了能说明问题上传主程序,只要是交叉统计就会出现问题,不一定要按三楼的代码。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:退耕还林数据管理系统.table

 

[此贴子已经被作者于2010-8-27 16:00:10编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/27 9:41:00 [显示全部帖子]

自定义菜单就有个交叉统计 数据维护—数据分析。我只要知道用什么办法可以避免小数溢出就行了

If ( e.Form.Controls("RadioButton1").Checked Or e.Form.Controls("RadioButton2").Checked Or e.Form.Controls("RadioButton3").Checked)= False Then
    Messagebox.Show("选一个项目")
    Return
End If
If ( e.Form.Controls("RadioButton4").Checked Or e.Form.Controls("RadioButton5").Checked )= False Then
    Messagebox.Show("选一个面积")
    Return
End If
Dim Filter As String
Dim cmb As WinForm.ComboBox=e.Form.Controls("ComboBox1")
If cmb.Value IsNot Nothing Then
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & "乡名= '" & cmb.Value & "'"
End If
Dim g As New CrossTableBuilder("交叉统计", DataTables("总览"),Filter)
If e.Form.Controls("RadioButton1").Checked Then g.VGroups.AddDef("造林年度","{0}年_总面积")
    If e.Form.Controls("RadioButton2").Checked Then g.VGroups.AddDef("造林类别","{0}_总面积")
        If e.Form.Controls("RadioButton3").Checked Then  g.VGroups.AddDef("林种","{0}_总面积")
            If e.Form.Controls("RadioButton4").Checked Then  g.Totals.AddDef("保存面积","总面积")
                If e.Form.Controls("RadioButton5").Checked Then  g.Totals.AddDef("退耕地","总面积")
                    If cmb.Value  IsNot Nothing Then
                        g.HGroups.AddDef("村名")
                    Else
                        g.HGroups.AddDef("乡名")
                    End If
                    g.HorizontalTotal = True
                    g.VerticalTotal = True
                    g.HorizontalProportion = True
                    g.VerticalProportion = True
                    g.Build()
                    MainTable = Tables("交叉统计")
                    Tables("交叉统计").Sort = "合计 DESC"
                    Tables("交叉统计").AutoSizeCols()  '自动列宽
                    Tables("交叉统计").Cols.Frozen = 2  '冻结前二列

[此贴子已经被作者于2010-8-27 9:46:51编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/27 10:00:00 [显示全部帖子]

这个问题一直就有,只是统计表不好看对应的报表却没有这个问题。如果一时难办的话就不要再费神了。

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/27 10:05:00 [显示全部帖子]

以下是引用狐狸爸爸在2010-8-27 9:58:00的发言:

我打开你的项目,无法正常运行,请直接给一段统计代码,或者告诉我水平分组列、垂直分组列,统计列,我直接对总览表进行统计。

我这里是正常的,水平分组列以乡名,垂直分组列造林类别,统计列设计面积

[此贴子已经被作者于2010-8-27 10:07:15编辑过]

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/8/27 10:15:00 [显示全部帖子]

Dim g As New CrossTableBuilder("统计表1", DataTables("总览"))
g.HGroups.AddDef("乡名")
g.VGroups.AddDef("造林类别")
g.Totals.AddDef("设计面积", "设计面积")
g.HorizontalTotal = True
g.VerticalTotal = True
g.Build()
MainTable = Tables("统计表1")

 

惭愧!简单问题复杂化。记得以前有导入的数据会产生小数溢出一说。

[此贴子已经被作者于2010-8-27 10:21:47编辑过]

 回到顶部