水晶报表 重复数据 汇总问题。(希望高手来指点)

answer913 2011-06-24 04:56:11
举个例子说明问题:
现在甲有1000元买件物品,分三次付款。
乙有500元买件物品,分二次付。

A B C D
甲 1000¥ 300¥ 第一次
甲 1000¥ 400¥ 第二次
甲 1000¥ 200¥ 第三次
乙 500¥ 100¥ 第一次
乙 500¥ 400¥ 第二次

我需要B字段和C字段汇总,
得到结果是:
A B C D
甲 1000¥ 300¥ 第一次
甲 1000¥ 400¥ 第二次
甲 1000¥ 200¥ 第三次
乙 500¥ 100¥ 第一次
乙 500¥ 400¥ 第二次
4000¥ 1400¥
但是很明显甲只有1000元,乙只有500元,但汇总后却变成了4000¥。正确结果应该是1500¥.
我虽然能过滤掉重复数据,但汇总结果是不会变的。

尝试用数据集来直接传递,我也得不出来我想要的结果。

跪求解答!!!!!!!!!!
...全文
176 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
东莞寻香苑 2011-06-25
  • 打赏
  • 举报
回复
一个简单的定义三个公式:
公式yyy1:
whilePrintingRecords;
shared Numbervar Amount:=0;

公式yyy2:
whilePrintingRecords;
Numbervar Amount;
whilePrintingRecords;
Numbervar Amount;
if not onfirstrecord then
(
if Previous ({tableC.a}) <> {tableC.a} or Previous ({tableC.b}) <> {tableC.b} then
Amount:=Amount+{tableC.b}
)
else
(
Amount:=Amount+{tableC.b}
)
公式yyy3:

whilePrintingRecords;
Numbervar Amount;

把公式yyy1放到报表头,然后抑制它显示(即yyy1在报表头的属性Suppress : true)
把公式yyy2放到详细资料区,然后抑制它显示(即yyy2在报表头的属性Suppress : true)
把公式yyy3拖到详细资料区以下的任何区域,yyy3即你所要的汇总
(红色部分不一定完全符合你的要求,只需稍微修改就可以)
xpcxpy 2011-06-24
  • 打赏
  • 举报
回复

SORRY ,第一次发图。。。
xpcxpy 2011-06-24
  • 打赏
  • 举报
回复
xpcxpy 2011-06-24
  • 打赏
  • 举报
回复
你试试这样:先按城市分组
再修改运行总计字段: 在 重置下面 勾选 组更改时,选 刚才新建的分组
再将运行总计字段放到组尾,
answer913 2011-06-24
  • 打赏
  • 举报
回复
想要的结果大概就是
我留言在10楼那种格式。
answer913 2011-06-24
  • 打赏
  • 举报
回复
SQL我当然也考虑过,我的列很多,写起来太麻烦了。
用公式怎么处理,能否举个例子,
请教。
阿泰 2011-06-24
  • 打赏
  • 举报
回复
从你的数据情况来看,水晶报表的表现是对的。
“但是很明显甲只有1000元,乙只有500元,但汇总后却变成了4000¥。正确结果应该是1500¥.”
水晶报表理解不了你的那个数据逻辑,他看到3条1000的数据,自然汇总成3000.

这种情况可以做一个公式单独去处理,当然SQL里直接处理也可以。
用SQL直接处理直观些。
answer913 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tashiwoweiyi 的回复:]
你数据有经过排重吗?

下面是sql查询例子代码。不知道是否有用。

SQL code

create table tableC
(
a varchar(30),
b int ,
c int ,
d varchar(30)
)
go

insert into tableC values ('甲',1000,300,'第一次')
ins……
[/Quote]
辛苦你了·,你这个查询只是得到汇总结果啦。你把我其他数据都丢啦,
如果我是几十列·是不是要写死了。。。其实我想过是可以用SQL写出来·但是太麻烦太麻烦了。
answer913 2011-06-24
  • 打赏
  • 举报
回复
E 属于城市一列,
我对E分组
我想得到结果是
在E 组尾结果如下

A B C D E
甲 1000¥ 300¥ 第一次 城市A
甲 1000¥ 400¥ 第二次 城市A
甲 1000¥ 200¥ 第三次 城市A
乙 500¥ 100¥ 第一次 城市A
乙 500¥ 400¥ 第二次 城市A
E : 1500¥ 1400¥
丙 700¥ 300¥ 第一次 城市B
丙 700¥ 400¥ 第二次 城市B
E: 700¥ 700¥
xpcxpy 2011-06-24
  • 打赏
  • 举报
回复
对你的问题有点糊涂,,
A B C D E
甲 1000¥ 300¥ 第一次 城市A
甲 1000¥ 400¥ 第二次 城市A
甲 1000¥ 200¥ 第三次 城市A
乙 500¥ 100¥ 第一次 城市A
乙 500¥ 400¥ 第二次 城市A
丙 700¥ 300¥ 第一次 城市B
丙 700¥ 400¥ 第二次 城市B
你想要的汇总是什么样的?
answer913 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xpcxpy 的回复:]
列B 1500¥的汇总功能 可以通过 运行总计字段来完成:

汇总字段选 B
汇总类型选 求和

求值 勾选 字段更改时 选A
[/Quote]
这个只能解决我这个例子上的问题,没有解决我想要的,
比如现在 对E 分组 再汇总
结果就是这样
A B C D E
甲 1000¥ 300¥ 第一次 城市A
甲 1000¥ 400¥ 第二次 城市A
甲 1000¥ 200¥ 第三次 城市A
乙 500¥ 100¥ 第一次 城市A
乙 500¥ 400¥ 第二次 城市A
E : 1500¥
丙 700¥ 300¥ 第一次 城市B
丙 700¥ 400¥ 第二次 城市B
E: 2200$


tashiwoweiyi 2011-06-24
  • 打赏
  • 举报
回复
你数据有经过排重吗?

下面是sql查询例子代码。不知道是否有用。

create table tableC
(
a varchar(30),
b int ,
c int ,
d varchar(30)
)
go

insert into tableC values ('甲',1000,300,'第一次')
insert into tableC values ('甲',1000,400,'第二次')
insert into tableC values ('甲',1000,200,'第三次')
insert into tableC values ('乙',500,100,'第一次')
insert into tableC values ('乙',500,400,'第二次')

go

select (select sum(B) as b from (select b FROM tableC group by b) bb ) b, (select sum(c) from tableC) c


xpcxpy 2011-06-24
  • 打赏
  • 举报
回复
把刚才新建的运行总计字段放到报表尾 就是对所有详细资料的汇总了
xpcxpy 2011-06-24
  • 打赏
  • 举报
回复
列B 1500¥的汇总功能 可以通过 运行总计字段来完成:

汇总字段选 B
汇总类型选 求和

求值 勾选 字段更改时 选A
answer913 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tashiwoweiyi 的回复:]
大哥,是不是你汇总的列错了,,看你上面显示的结果,好像你是汇总第二项了。。。而不是第四项
[/Quote]

我现在 要对 第二项,第三项 都需要汇总。大哥 看下题目啊。
answer913 2011-06-24
  • 打赏
  • 举报
回复
这个格式 发帖出来的时候有点问题。

A 是甲那一列
B 是持有的金钱那一列,
C 是付了钱的那一列,
D 是付了钱的次数这一列,
我汇总必然 看B 和C 金额钱的总合
最后汇总的结果是
A B C D
甲 1000¥ 300¥ 第一次
甲 1000¥ 400¥ 第二次
甲 1000¥ 200¥ 第三次
乙 500¥ 100¥ 第一次
乙 500¥ 400¥ 第二次
A: 4000¥ 1400¥
但正确的结果应该是
A : 1500¥ 1400¥

这跟汇总的列有什么关系?
tashiwoweiyi 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tashiwoweiyi 的回复:]
大哥,是不是你汇总的列错了,,看你上面显示的结果,好像你是汇总第二项了。。。而不是第四项
[/Quote]

而不是第三项。。。
tashiwoweiyi 2011-06-24
  • 打赏
  • 举报
回复
大哥,是不是你汇总的列错了,,看你上面显示的结果,好像你是汇总第二项了。。。而不是第四项
Crystal Reports 9.2 中文版(水晶报表) 下载,,软件版本:9.2.0.448不过现已出了Crystal Reports Professional v9.2.2.634 (c) Crystal Decisions,有足够的空间就提供.这是一个很不错的报表控件,我相信很多朋友都听说过吧!Crystal Reports 用于处理数据库,帮助用户分析和解释重要信息。使用 Crystal Reports 可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。 创建所能想象的任何报表 Crystal Reports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流。 将报表扩展到 Web Crystal Reports 的灵活性并未停留在创建报表这一功能上 ?您可以用各种各样的格式发布报表,包括用 Microsoft 的 Word 和 Excel 发布、通过电子邮件甚至 Web 发布。高级的 Web 报表功能允许工作组中的其他成员在他们自己的 Web 浏览器中查看或更新共享报表。 将报表并入应用程序通过将 Crystal Reports 的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。Crystal Reports 支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。 不论您是 IT 行业的站点管理员,还是营销推广经理,也无论您是金融业的数据库管理员还是 CEO,Crystal Reports 都堪称是一个功能强大的工具,它可以帮助每一个人分析、解释重要信息。感谢 revenant 上传!

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧