以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 统计工具中的数据分析有点小问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12581) |
-- 作者:reachtone -- 发布时间:2011/9/7 23:31:00 -- 统计工具中的数据分析有点小问题 以自带的“多表统计”为例,执行如下代码:
Dim b As New SQLGroupTableBuilder("统计表1","订单") b.Build
问题是:不论将统计列的列名称定义成什么,比如22、33、ab%等任何奇怪的名称,只要没有蓝底白字的那两行代码,都能正确统计;一旦加上这两行代码中的任何一个,则统计肯定出错!事实是,不仅这两行代码,所有与数据分析相关的属性,一旦加入,都会出错。 可能有人会问:干嘛要设置那么奇怪的统计列名称呢?这是实际工作中碰到的,需要根据用户设置的内容来生成统计表。也就是说,列名都不是事先设定的,都是根据用户输入的内容自动生成的。 |
-- 作者:紙上不談兵 -- 发布时间:2011/9/8 6:37:00 -- 问题是:狐表的列名不能以数字开头,更不能全是数字,也不能包括空格和各种符号(下划线除外),但是列标题没有任何限制,只要你愿意,不同的列甚至可以有相同的标题 有些规则一定要遵守的,像22、33、ab%,明显和狐表对着干!即使这些是用户设置的内容,但程式是您设计的,您完全可以把用户设置的内容设置为变为符合规则,如: Dim b As New SQLGroupTableBuilder("统计表1","订单") b.VerticalTotal = True b.Build 除非老大更改程式,否则就像老大说的:以下代码出错是正常的,不出错是意外! Dim b As New SQLGroupTableBuilder("统计表1","订单") b.Build [此贴子已经被作者于2011-9-8 6:59:43编辑过]
|
-- 作者:reachtone -- 发布时间:2011/9/8 7:36:00 -- 呵呵,正常建表当然是应该遵循这些规则的。但生成的统计表就会碰到各种复杂的情况。 既然不加参数可以正常统计,说明使用这些列名没问题。 其实,foxtable的统计工具也是通过sql语句完成的。在sql中,只要列标题用[]括起来,标题中有任何特殊的字符都是可以的。这是小问题,老大应该可以轻松解决。 |
-- 作者:狐狸爸爸 -- 发布时间:2011/9/8 8:17:00 -- 还是加个字母开头吧,统计结果虽然用SQL完成,但是还是要加工的,符合foxtable的规范很重要。 |
-- 作者:reachtone -- 发布时间:2011/9/8 8:22:00 -- 加个字母也不行,比如有的列是含有%符号的,仍然出错。 关键问题还不在这里,因为我根本不知道用户可能还会输入其它什么内容。所以,最好还是想个彻底的办法解决为好。 |
-- 作者:狐狸爸爸 -- 发布时间:2011/9/8 8:25:00 -- 写个代码检测,如果是数字开发,或者包括空格和符号,就给予提示就行。 就像foxtable的重命名列,输入不规范,就会提示。 |
-- 作者:紙上不談兵 -- 发布时间:2011/9/8 8:26:00 -- 以下是引用reachtone在2011-9-8 8:22:00的发言:
加个字母也不行,比如有的列是含有%符号的,仍然出错。 关键问题还不在这里,因为我根本不知道用户可能还会输入其它什么内容。所以,最好还是想个彻底的办法解决为好。 Dim b As New SQLGroupTableBuilder("统计表1","订单") b.VerticalTotal = True b.Build 这样变通不行吗?名字正规化,用户输入作标题! |
-- 作者:reachtone -- 发布时间:2011/9/8 8:32:00 -- 这个问题我通过代码是可以解决的,比如列名统一用一个字母加上顺序号,列标题用用户输入的内容。(循环读取的用户设置,列名加上序号就可以了)。 我提出这个问题的目的是,foxtable作为应用软件,可能有的用户并不要编码,遇到这种情况直接统计就出错了。所以还是希望foxtable更完善。 因为直接用户是把它作为应用软件来用的,他才不管这么多呢。。。
|
-- 作者:紙上不談兵 -- 发布时间:2011/9/8 8:37:00 -- 以下是引用reachtone在2011-9-8 8:32:00的发言:
我提出这个问题的目的是,foxtable作为应用软件,可能有的用户并不要编码,遇到这种情况直接统计就出错了。 ---------------------------------------------------------------------------------------------------- 不明,如没有编码,怎会出现:b.Totals.AddExp("22","单价*数量") 呢? |
-- 作者:reachtone -- 发布时间:2011/9/8 8:53:00 -- 这种表很常见吧?
项目 2001年 2002年 2003年。。。 aa 。。 bb 。。 cc 。。 dd 。。 ee 。。
这种表在foxtable中是没办法建立的,但在外部数据库中没问题。如果用这种外部数据源,然后对年份列分组统计试试? 实际应用中,各种可能的情况太多了。 |