Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:类似交叉统计的统计

1楼
chenwuwenyu 发表于:2009/7/28 16:45:00
例:公司有五种产品为A、B、C、D、E
产品使用表
日期  销售人员   产品     数量
02       小李      A          1
05       小李      D          2
假如上面为产品使用表中筛选出来的两行数据
目前需要根据这两行数据生成如下表
日期 A      B       C      D       E
02   1
05                             2

问题就是如何实现这个产品的统计填入

不知道我有没有把问题说清楚呢

帮助中跨表的统计,貌似能实现,不过我不怎么懂,请教各位,谢谢大家
2楼
mr725 发表于:2009/7/28 18:14:00
如果没有更好的办法,就这样:  建立一个和产品使用表一样结构的空表(或用代码生成一个临时表),筛选的结果充填到这个空表中,再在这个表(被充填数据的表)上进行交叉统计..............应该ok了~  
3楼
reachtone 发表于:2009/7/28 18:28:00

直接用交叉统计就可生成.

4楼
chenwuwenyu 发表于:2009/7/28 18:28:00

问题是交叉统计并不能生成我想要的表的结构,比如有此所统计的数据中不会五种产品都有,交叉统计表也就不会出现相对应的列,

5楼
mr725 发表于:2009/7/28 19:29:00

做个例子上来,包括:原始表(包含一定数据行) 和 要生成的交叉统计表的结构。。。。。。。。

6楼
chenwuwenyu 发表于:2009/7/28 20:41:00

由产品表生成统计表,注意一点是,产品表中并未出现过产品C,但要求统计表有这一列

另:希望统计结果是针对筛选结果也可以进行,不是针对全表数据

谢谢大家

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2009-7-28 20:43:59编辑过]
7楼
狐狸爸爸 发表于:2009/7/28 21:05:00
没有看懂,不过交叉统计本来就只包括筛选出来的数据嘛,为啥不用呢?
8楼
chenwuwenyu 发表于:2009/7/28 22:23:00
交叉统计生成的统计表,横向统计产生的列只是目前数据表中有的类型,而且列不排序,我需要的是,某产品在数据表中没有,但统计表中也要有这一列
不知道有没有表达清楚呢图片点击可在新窗口打开查看
9楼
mr725 发表于:2009/7/28 22:30:00
以下是引用狐狸爸爸在2009-7-28 21:05:00的发言:
没有看懂,不过交叉统计本来就只包括筛选出来的数据嘛,为啥不用呢?

楼主要在统计表中固定一些列,来达到统计的结果。也不知道筛选后会有几个产品被筛选出来的~

楼主你在“产品表”做个按钮,在你筛选完后(要排除重复内容),点击这个按钮 代码:  试一试吧
注意:与数字计算有关的列要改为整数型(或其他数字型),统计表中产品A的列名为‘A ’,列标题为‘产品A’,其他列亦同

DataTables("统计表").DataRows.Clear()
for i as Integer = 0 to tables("产品表").count -1
    Dim dr As DataRow
    dr = DataTables("统计表").AddNew()
    dr("医生") = currenttable(i,"医生")
next

MainTable = Tables("统计表")
for i as Integer = 0 to tables("统计表").count -1
    For Each cl As Col In tables("统计表").Cols
        if cl.name <> "日期" and cl.name <> "医生"
            currenttable(i,cl.name)= DataTables("产品表").Compute("Sum(数量)", "产品 = '" & cl.name & "'and 医生 = '" & currenttable(i,"医生") & "' ")
        end if
    Next
Next

[此贴子已经被作者于2009-7-28 22:32:00编辑过]
10楼
狐狸爸爸 发表于:2009/7/28 22:31:00

哦,明白了。
没有办法的,只能先用交叉统计,然后对于那些没有出现的产品,用代码增加对应的列。

利用Add方法,可以增加临时列,并可给临时列设置表达式。
通过代码增加的临时列,在重新打开项目文件后,将不复存在。

Add方法的语法为:

Add(Name, GetType(Type))
Add(Name, GetType(Type), Expression)

参数说明:

例如:

DataTables("订单").DataCols.Add("金额", GetType(Double), "[数量] * [单价] * (1 - [折扣])")

共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03320 s, 3 queries.