Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
以自带的“多表统计”为例,执行如下代码:
Dim b As New SQLGroupTableBuilder("统计表1","订单")
b.C
b.Groups.AddDef("产品ID")
b.Totals.AddExp("22","单价*数量") '注意这里生成的列名
b.VerticalTotal = True
b.GroupProportion = True
b.Build
问题是:不论将统计列的列名称定义成什么,比如22、33、ab%等任何奇怪的名称,只要没有蓝底白字的那两行代码,都能正确统计;一旦加上这两行代码中的任何一个,则统计肯定出错!事实是,不仅这两行代码,所有与数据分析相关的属性,一旦加入,都会出错。
可能有人会问:干嘛要设置那么奇怪的统计列名称呢?这是实际工作中碰到的,需要根据用户设置的内容来生成统计表。也就是说,列名都不是事先设定的,都是根据用户输入的内容自动生成的。
Dim b As New SQLGroupTableBuilder("统计表1","订单")
b.C
b.Groups.AddDef("产品ID")
b.Totals.AddExp("ABC","单价*数量","ab%") '注意这里生成的列名
b.VerticalTotal = True
b.GroupProportion = True
b.Build
Dim b As New SQLGroupTableBuilder("统计表1","订单")
b.C
b.Groups.AddDef("产品ID")
b.Totals.AddExp("22","单价*数量") '注意这里生成的列名
b.Build
呵呵,正常建表当然是应该遵循这些规则的。但生成的统计表就会碰到各种复杂的情况。
既然不加参数可以正常统计,说明使用这些列名没问题。
其实,foxtable的统计工具也是通过sql语句完成的。在sql中,只要列标题用[]括起来,标题中有任何特殊的字符都是可以的。这是小问题,老大应该可以轻松解决。
加个字母也不行,比如有的列是含有%符号的,仍然出错。
关键问题还不在这里,因为我根本不知道用户可能还会输入其它什么内容。所以,最好还是想个彻底的办法解决为好。
写个代码检测,如果是数字开发,或者包括空格和符号,就给予提示就行。
就像foxtable的重命名列,输入不规范,就会提示。
加个字母也不行,比如有的列是含有%符号的,仍然出错。
关键问题还不在这里,因为我根本不知道用户可能还会输入其它什么内容。所以,最好还是想个彻底的办法解决为好。
Dim b As New SQLGroupTableBuilder("统计表1","订单") b.VerticalTotal = True b.Build 这样变通不行吗?名字正规化,用户输入作标题!
b.C
b.Groups.AddDef("产品ID")
b.Totals.AddExp("ABC","单价*数量","ab%") '注意这里生成的列名
b.GroupProportion = True
这个问题我通过代码是可以解决的,比如列名统一用一个字母加上顺序号,列标题用用户输入的内容。(循环读取的用户设置,列名加上序号就可以了)。
我提出这个问题的目的是,foxtable作为应用软件,可能有的用户并不要编码,遇到这种情况直接统计就出错了。所以还是希望foxtable更完善。
因为直接用户是把它作为应用软件来用的,他才不管这么多呢。。。
我提出这个问题的目的是,foxtable作为应用软件,可能有的用户并不要编码,遇到这种情况直接统计就出错了。
----------------------------------------------------------------------------------------------------
不明,如没有编码,怎会出现:b.Totals.AddExp("22","单价*数量") 呢?
这种表很常见吧?
项目 2001年 2002年 2003年。。。
aa 。。
bb 。。
cc 。。
dd 。。
ee 。。
这种表在foxtable中是没办法建立的,但在外部数据库中没问题。如果用这种外部数据源,然后对年份列分组统计试试?
实际应用中,各种可能的情况太多了。