Office中国论坛/Access中国论坛

标题: [已解决]在Access上,能生成这样一个表吗?求助很久了,我只想有个方向~~~~ [打印本页]

作者: stvent    时间: 2013-5-14 12:14
标题: [已解决]在Access上,能生成这样一个表吗?求助很久了,我只想有个方向~~~~
本帖最后由 stvent 于 2013-5-21 08:15 编辑

首先,字段不是固定的,而且列数也不固定,但应用计算是从第二列开始的附件是excel,有公式的!
[attach]51792[/attach]

上面的是源表,如何生成下面的那个表,我现在在excel中用公式产生的!
[attach]51814[/attach]



作者: stvent    时间: 2013-5-14 13:48
没人处理吗?
作者: stvent    时间: 2013-5-14 15:23
怎么这么静的!~
作者: stvent    时间: 2013-5-14 16:22
{:soso_e105:}
作者: aslxt    时间: 2013-5-14 19:54
你的统计规则根本就看不出来,比如什么算有效?
第一个表和第二个表之间的变换规则是?
作者: stvent    时间: 2013-5-14 23:15
aslxt 发表于 2013-5-14 19:54
你的统计规则根本就看不出来,比如什么算有效?
第一个表和第二个表之间的变换规则是?

你有下载附件看我表格里的公式吗??
作者: stvent    时间: 2013-5-14 23:15
aslxt 发表于 2013-5-14 19:54
你的统计规则根本就看不出来,比如什么算有效?
第一个表和第二个表之间的变换规则是?

都是有工式的
作者: stvent    时间: 2013-5-15 09:01
早上顶顶!~
作者: stvent    时间: 2013-5-15 11:44
唉!~~~~~~~~~~~~
作者: stvent    时间: 2013-5-15 13:49
难道真的没办法实现了?
作者: stvent    时间: 2013-5-15 16:41
{:soso_e105:}{:soso_e105:}
作者: yinxiaobao    时间: 2013-5-15 22:27
用IIf语句:IIF(NZ([期初],0)+NZ([4月第三周],0)<5,NZ([期初],0)+NZ([4月第三周],5)
作者: stvent    时间: 2013-5-15 23:51
yinxiaobao 发表于 2013-5-15 22:27
用IIf语句:IIF(NZ([期初],0)+NZ([4月第三周],0)

写在那里???
作者: stvent    时间: 2013-5-16 00:27
不可能完成吗?
作者: aslxt    时间: 2013-5-16 12:11
期初就是“2013/4/19之前”,可以看出来,“4月第三周”看不出来,2013年4月的第三周为14~20日,实际数据为2013/4/19之前、2013/4/24~28,你怎么统计出“4月第三周”的来?
作者: aslxt    时间: 2013-5-16 12:15
动态的行数、列数是没有问题的。你excel的公式用文字描述出来。
或给你一个思路:用代码根据交叉表查询的结果,动态修改查询的sql语句,然后展示结果即可。
作者: aslxt    时间: 2013-5-16 12:20
比如你在excel的公式:=IF(SUM($B3:F3)<5,SUM($B3:F3),5)
是不是表示4月27日前“长度10-12M”所有的数据如果超出5,只取5,;小于5,取他自身?
作者: stvent    时间: 2013-5-18 23:41
aslxt 发表于 2013-5-16 12:20
比如你在excel的公式:=IF(SUM($B3:F3)

是的!能否在我上传的Access附件中,做个例子
作者: stvent    时间: 2013-5-18 23:43
aslxt 发表于 2013-5-16 12:11
期初就是“2013/4/19之前”,可以看出来,“4月第三周”看不出来,2013年4月的第三周为14~20日,实际数据为 ...

这个只是字段我改了一下名,误导了老师,对不起
作者: stvent    时间: 2013-5-18 23:45
本帖最后由 stvent 于 2013-5-19 00:06 编辑
aslxt 发表于 2013-5-16 12:15
动态的行数、列数是没有问题的。你excel的公式用文字描述出来。
或给你一个思路:用代码根据交叉表查询的结 ...

“用代码根据交叉表查询的结果,动态修改查询的sql语句,然后展示结果即可。”

我查过一下,有两种方法
第一种方法:
Dim qdfSQL As QueryDef

Set qdfSQL = CurrentDb.QueryDefs("已存在的查询名")
qdfSQL.Sql = "修改后SQL语句" 
qdfSQL.Close
Set qdfSQL = Nothing

第二种方法:
CurrentDb.QueryDefs("已存在的查询").SQL = "SQL语句"
但,我该如何用SQL把我原有的交叉查询变成我要的那个表呢???

作者: stvent    时间: 2013-5-18 23:52
aslxt 发表于 2013-5-16 12:11
期初就是“2013/4/19之前”,可以看出来,“4月第三周”看不出来,2013年4月的第三周为14~20日,实际数据为 ...

附件我更正了信息内容,麻烦老师帮我做个例子!
作者: stvent    时间: 2013-5-19 11:46
大侠们~~~~
作者: stvent    时间: 2013-5-20 08:09
{:soso_e109:}
作者: 竹笛    时间: 2013-5-20 08:29
Access里面这么做就不合算了
作者: aslxt    时间: 2013-5-20 16:15
实例,日期字段修改为“日期”了(规范,也为了方便聚合函数的使用),第几周和期初也按照估计设定了一个指定的日期[attach]51819[/attach]
作者: aslxt    时间: 2013-5-20 16:16
结果在“第五个查询”中
作者: stvent    时间: 2013-5-20 23:33
aslxt 发表于 2013-5-20 16:16
结果在“第五个查询”中

老师,结果虽然有,但我想知道,经历5个查询的一步步实现是怎样一个原理吗?
作者: stvent    时间: 2013-5-20 23:45
aslxt 发表于 2013-5-20 16:16
结果在“第五个查询”中

IIf(DCount("id","开卷","分类='" & [分类] & "' AND 日期<=#" & [日期] & "#")>5,5,DCount("id","开卷","分类='" & [分类] & "' AND 日期<=#" & [日期] & "#"))
这聚合公式与我excel中的差别很大,可以讲解一下吗?怎么会把id与5作比较的???
作者: aslxt    时间: 2013-5-21 12:29
DCount("id","开卷","分类='" & [分类] & "' AND 日期<=#" & [日期] & "#")----统计“开卷”表中的记录数(“ID”是不会有空值的字段,所以选用他,你也可以用其它字段,条件是该字段不能为空),"分类='" & [分类] & "' AND 日期<=#" & [日期] & "#"  是统计的条件表达式

IIF(统计结果>5,5,统计结果)----这个不用解释了吧?
作者: aslxt    时间: 2013-5-21 12:37
stvent 发表于 2013-5-20 23:33
老师,结果虽然有,但我想知道,经历5个查询的一步步实现是怎样一个原理吗?

a、1和2是获得数据的完整资料,一共有多少类别,一共有多少天。
b、3是把1和2合并。得出要统计的各种条件
c、4是把各种统计条件列出来,并到表中统计符合条件的数据。
d、5是根据4的结果,用你要求的格式(交叉表)展现数据
5个查询只是为了初学者理解,可以合并为至多2个查询。
作者: stvent    时间: 2013-5-21 13:09
aslxt 发表于 2013-5-21 12:37
a、1和2是获得数据的完整资料,一共有多少类别,一共有多少天。
b、3是把1和2合并。得出要统计的各种条件 ...

嗯,很清楚清析了!谢谢你!~
作者: stvent    时间: 2013-5-21 13:22
aslxt 发表于 2013-5-21 12:37
a、1和2是获得数据的完整资料,一共有多少类别,一共有多少天。
b、3是把1和2合并。得出要统计的各种条件 ...

老师,我想问,如果运行这么多个查询得到结果,如果在数据量很大的时候,速度会受到很大影响吗?
作者: aslxt    时间: 2013-5-21 13:27
stvent 发表于 2013-5-21 13:22
老师,我想问,如果运行这么多个查询得到结果,如果在数据量很大的时候,速度会受到很大影响吗?

对,数据量大后会很慢,甚至或死机。
后期可以考虑用其它方法,避免聚合函数的使用。
作者: yinxiaobao    时间: 2013-5-22 22:30
写在查询里。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3