水晶报表 图表颜色格式专家中化常量为“变量”

来源:互联网 发布:邻座的怪同学 知乎 编辑:程序博客网 时间:2024/04/25 14:19

这个灵感还是来自于同事,他多次启发了我,包括上次的水晶报表背景图片,在此一并感谢:)
-------------------------------------------------------------------------------------------------------------------------------------------------

由于水晶报表图表的颜色(条形图中的每根“柱子”、饼图中的每块扇形等)默认都是自动分配的,如今有这样的需求:我们要让它在特定的条件下显示出特定的颜色。而这自然要通过格式专家中进行设置,如下图


其实这边常量终究还是常量,不管你有七十二般变化,它还是常量,所以我标题中的变量加上了引号。既如此,那又为何撰写此文呢:)我们可以换个角度想,这里文本框的常量是没法改变它常量的本质,但上面的值下拉框确是我们可以控制的,因此这成为了我们的突破口,我们可以在数据源中额外的增加一标识字段来标识我们的特定条件,以此来间接达到“以静制动”的效果。
先说明下本文要实现的需求:
要做一个这样的统计:每一道题(这边仅限单选题)每个选项有多少个学生选,占总学生人数的百分比(饼图中显示),正确答案选项要特别高亮显示,饼图中的正确答案那块扇形也必须用指定颜色显示,看下效果图比较直观(图中的 8 代表的是总学生人数)


好了,看完需求描述,可参考如下的解决方案来实现:
首先,报表详细节显示图表
报表的图表是不允许直接放在详细节的,我这边采取的方案是放在#组头(组页眉)节,然后进入节专家勾选“延伸到后续节”(或许可考虑在详细节插入子报表,但考虑到效率问题,否决子报表方案)


其次,化常量为“变量”


前文已曾提及需增加一标识字段,于是我们在数据集添加一个是否正确答案的布尔型标识字段CorrFlag;

注:ItemCount字段的数据类型切记用数值型,切记切记。。
设计模板


我们只是在图表颜色格式专家中用到CorrFlag字段,并不需要让它在报表显示出来,所以“抑制显示”
模板中的ItemPct公式:
ToText({QuestionTable.ItemCount},0)+'/'+ToText({QuestionTable.TotalCount},0)
//“选该项的学生人数/总学生人数”----字符串格式显示
右击图表对象,进入图表专家,设置数据显示


Option公式:
Left({QuestionTable.Item},1)
为了获取每个选项的第一个字符(即A、B、C、D…),图表显示标签值所需
设置选项格式


最后设置下模板中Item和ItemPct的格式(因为要特别高亮显示)
右击对象进入对象格式编辑器,切换到“字体”标签页,点击“样式”右边的公式按钮,编辑:
if {QuestionTable.CorrFlag} then //如果是正确答案选项
 crBoldItalic //粗体倾斜 显示
else
 crRegular  //常规 显示
点击“颜色”右边的公式按钮,编辑:
if {QuestionTable.CorrFlag} then //如果是正确答案选项
 crBlue //蓝色 显示
else
 crBlack //黑色 显示
代码就是填充数据集,就不晾出来了:)有什么问题欢迎探讨。。

原创粉丝点击