Office中国论坛/Access中国论坛

标题: 关于5个计划同时比较的问题 [打印本页]

作者: winner    时间: 2006-7-21 23:27
标题: 关于5个计划同时比较的问题
现在有5个计划,每个计划都一张表,表设计为:日期   产品编码    数量

我想在报表中实现:输入条件,如7月1日到7月7日,报表就会显示:

                                                      产品编码

               7月1日      7月2日   ^^^^^^^^^^         7月7日     周合计

计划1

计划2

计划3

计划4

计划5

如果选择7月8日到7月14日,报表也会跟着变化.请问可以用什么方法实现?告诉我思路就可以了,谢谢!

[attach]19171[/attach]
我想过的办法是:将符合筛选条件5个计划都分别追加到一张临时表,然后用这张临时表做交叉查询,最后做成报表.

但是这样涉及到每次都先清空临时表,再追加.如果2个以上的人同时操作,就会出现问题,数据可能重复,可能会被其中一个人删掉那样,要怎么办呢?

[此贴子已经被作者于2006-7-21 15:50:09编辑过]


作者: sgrshh29    时间: 2006-7-22 00:20
先做成联合查询,再把它做成参数形式的交叉查询,看看行不行?
作者: winner    时间: 2006-7-22 01:22
[attach]19173[/attach]


联合查询做出来了,但交叉表那里说有错误.我以前就发现,如果做交叉表的查询有筛选条件,交叉表会出错,(所以我一直是用临时表做交叉表的,但这样会出现一楼说到的追加删除问题),为什么会这样?
作者: hi-wzj    时间: 2006-7-22 01:29
交叉表中添加查询条件后,在其设计界面的菜单上,查询-->参数,将参数的数据类型定义一下即可.
作者: winner    时间: 2006-7-22 01:34
我定义了dDate为时间日期,cInvAddCode为文本,还是不行.(查询条件我在联合查询里加了)

[此贴子已经被作者于2006-7-21 17:34:54编辑过]


作者: hi-wzj    时间: 2006-7-22 01:39
那三个参数应该在交叉表查询中设置.
作者: winner    时间: 2006-7-22 01:50
是的.我删了联合查询里的条件,然后设在交叉表那里,还设了参数,还是不行.
作者: winner    时间: 2006-7-23 01:46
[attach]19199[/attach]
我设了条件,还是运行出错??[em09]
作者: sgrshh29    时间: 2006-7-23 04:19
以下是引用winner在2006-7-22 17:46:00的发言:


[attach]19199[/attach]
我设了条件,还是运行出错??[em09]



[em07]怎么设置的参数?[em01][em01][em01]

PARAMETERS [Forms]![窗体1]![dDate1] DateTime, [Forms]![窗体1]![dDate2] DateTime,[Forms]![窗体1]![Combo4] Text ( 255 );
TRANSFORM Sum(查询1.iQuantity) AS iQuantity之总计
SELECT 查询1.cInvAddCode
FROM 查询1
WHERE (((查询1.dDate) Between [Forms]![窗体1]![dDate1] And [Forms]![窗体1]![dDate2]) AND ((查询1.cInvAddCode)=[Forms]![窗体1]![Combo4]))
GROUP BY 查询1.cInvAddCode
PIVOT 查询1.dDate;

作者: andymark    时间: 2006-7-23 04:53
在联合查询iGrade前面加上"计划"字符,再以此按9楼的方法就可以实现你的报表

select 计划1.dDate,计划1.cInvAddCode,计划1.iQuantity,("计划" & 计划1.iGrade) as 计划  From 计划1
union all
select 计划2.dDate,计划2.cInvAddCode,计划2.iQuantity,("计划" & 计划2.iGrade) as 计划 From 计划2
union all
select 计划3.dDate,计划3.cInvAddCode,计划3.iQuantity,("计划" & 计划3.iGrade) as 计划 From 计划3
union all
select 计划4.dDate,计划4.cInvAddCode,计划4.iQuantity,("计划" & 计划4.iGrade) as 计划 From 计划4
UNION ALL select 计划5.dDate,计划5.cInvAddCode,计划5.iQuantity,("计划" & 计划5.iGrade) as 计划 From 计划5;
作者: winner    时间: 2006-7-24 04:46
[attach]19215[/attach]


我明白了,原来之前是参数那里设置错误,现在可以运行了。不过现在交叉表将每天5个计划的数量全部加起来了,我要显示5个计划,每一天各多少,应该怎样?

例如:选择1020121,2006-1-1 至 2006-1-7,出现:

               2006-1-1       2006-1-2         ……   2006-1-7

计划1            100               250                            201

计划2            434               346           ……

计划3

计划4

计划5
作者: andymark    时间: 2006-7-24 05:05
增加一个iGrade的行标题
作者: winner    时间: 2006-7-24 05:08
是哦,我又忘记了,谢谢!

[em01]以后我可以不用再搞临时表了[em01][em01][em01]
作者: 河畔青芙    时间: 2008-6-24 12:55
学习一下




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