水晶报表 sum(每个颜色数量)统计公式? [图]

zhaozhijun0207 2010-06-19 06:48:53
[VS2005自带水晶报表 SQL2000 WinForm C#]

图中的数据 显示在水晶报表"详细资料节"里面,按颜色排序的(颜色的名称是不固定的)

我想在写个公式,统计每个颜色的总数量:
红色:37
绿色:24
黄色:106
紫色...等

这个公式怎么写?
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿泰 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhaozhijun0207 的回复:]

用的另外一个方法做的
[/Quote]

zhaozhijun0207 2010-06-21
  • 打赏
  • 举报
回复
用的另外一个方法做的:

图1:添加命令

图2:在命令里面写SQL语句,然后生成虚拟表,跟主表关联起来

图2:做在子报表里面 ,然后添加到主报表里面去
阿泰 2010-06-20
  • 打赏
  • 举报
回复
如果不需要显示详细资料节,可按2楼的方法
如果需要显示详细资料节,就需要使用3楼的方法

3楼的方法的另外一种实现方式,不用分组,前提是数据已经按照颜色排序

1:新建一个公式x1,放到详细资料节上,然后抑制显示
2:把这个x1放在报表页脚上,设置为"可以扩大"

公式内容为,其原理就是根据当前条与上一条的逻辑判断,性能比2楼csui2008的方法要低一些
只是作为一种新的参考吧。

公式如下


stringvar sret;
numbervar iret;

//第一行,初始化
if onfirstrecord then
(
sret:={颜色字段};
iret:={数量字段};
)
else
(
//如果当前行跟前一行是同一种颜色,进行数量累加
if {颜色字段}=previous({颜色字段}) then
iret:=iret+{数量字段}
//否则,组合前一阶段的颜色及数量累计,加一个chr(13)进行换行。并组合当前新的颜色字段,并重新计数
else
(
sret:=sret +':' +cstr(iret,0) + chr(13) +{颜色字段};
iret:={数量字段};
)
)
;

//返回值
sret +':' +cstr(iret,0)
东莞寻香苑 2010-06-20
  • 打赏
  • 举报
回复
接楼上LuoLs的思路:

先按 颜色字段 分组
然后建两个辅助公式及一个你想要的公式:
1.公式X1:
whilePrintingRecords;
shared stringvar All:="";

放在分组前的任何节点中,尽理离分组近点,属性为抑制其显示(Suppress:true)
2.公式X2:
whilePrintingRecords;
stringvar All;
All:=All+ToText ({颜色字段})+":"+ToText (Sum ({数量字段},{颜色字段}))+Chr(13)

放在分组节点中,属性为抑制其显示(Suppress:true)
3.公式X3:
whilePrintingRecords;
stringvar All;
X3即为所想要公式,位置放在分组后的任何地方,长度要拉合适,允许其自动换行(CanGrow:true),X3即可显示:
红色:37
绿色:24
黄色:106
紫色...等

阿双2009 2010-06-19
  • 打赏
  • 举报
回复
先按 颜色字段 分组,然后新建公式x1,编辑:
Sum({数量字段},{颜色字段})

将公式放在组尾即可。
永生天地 2010-06-19
  • 打赏
  • 举报
回复
帮顶 水晶报表没用过,不过写sql倒是很容易

4,816

社区成员

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

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