【水晶报表内功心法】--公式、函数与运行时总计这个图上的(x+2)后面就是一个公式,如果里面没有内容,这个图标
【水晶报表内功心法】--公式、函数与运行时总计
这个图上的(x+2)后面就是一个公式,如果里面没有内容,这个图标就是这种默认的颜色。
如果里面有内容,则图标会变成红色。
本文的示例数据延续前文中的例子
实例1,如果用户分数等于12,则显示为蓝色,如果等于15分则显示为蓝色,其他显示为黑色。
点击上图中的(x+2),进入公式编辑界面。

我抓了个大图,里面做了一些标记。
公式本身就比较简单了,不必再进行说明。
注意前面的图上左上角的两个指向,x+2是指检查该公式是否正确,检查完毕后停留在当前界面
保存并关闭,则是先检查后保存公式并且关闭本界面,回到前一界面上。
好了,我们再运行一下程序,效果就出来了。

实例2,控制每3条记录换页
进入节专家


点中“详细资料节”,勾选后面的“在后面新建页”,然后编辑后面的公式为

如果公式有错误,则会有类似下面的提示,当然,根据错误的不同,提示也不一样

再预览一下,之前我们显示1页的数据,已经分页了。注意上面的 1+,说明页数多于一页。

但是并没有显示实际页数,这是水晶报表的一个优化机制。如果是多页的数据,它只显示第一页
有点类似于我们的一些数据库分页操作一样。但是这个也带来很多批评。
而实际上,解决方法也是有的。
就是这样

然后把x1拖到界面上,放到原来数据的后面,预览后就显示

实例4,代码中修改公式
新建一个公式字段x2,里面就放一个现有字段即可

显示效果如下

恩,没什么感觉吧。
另外做一个公式字段x2title,作为x2这一列的题头


然后代码里控制一下:
这个可以实时变化的字段,有很多用处的。
用过的朋友应该记得,在分组、图表、交叉表的时候,都可以使用公式字段作为运算字段的
如果我们在代码中控制公式里的字段变化,那么自然也达到了动态分组、动态图表等效果了
类似的应用可以参考:
《在水晶报表中实现任意选择指定字段显示-模板及C#升级版》
《用公式实现动态设置图表的轴数据项 》
这个是单一公式,公式之间可以嵌套使用,有时候也可以结合全局变量进行多公式协作
这些在后面的一些实际应用场景中会讲到。
2:运行时总计
我们知道报表里内置了求和和计数等汇总功能,但是如何只求部分数据的和呢?
实例5:
求大于15分的所有分数的和,求大于15分的人的个数,并求得平均值
新建一个运行时总计字段Rtotal0,这个用于获取分数和


注意在“求值”的位置,编辑后面的公式:

新建一个运行时总计字段Rtotal1,这个用于获取人数

注意这个求值也是用了公式的,所以(x+2)是红色的,公式的内容跟Rtotal0一样。
因为都是同样的规则。
新建一个公式字段x3,
运行时总计,就是数据从上往下显示时的一种数据处理,
他的数据只能从上往下走,按照一定的规则处理其中的一些数据。
它一定要出现在数据的下面(或与数据平行),而不能与其他Max,Sum等聚合函数一样可以出现在数据之前。
实质上,运行时总计,本身就是公式的一种特殊应用。
3:函数函数其实也是基于公式的,跟我们普通程序一样。如果有很多重复的公式,那么可以提炼成函数进行复用。
我们就以前面的公式x1进行改造。
模板上不能直接进入函数编辑界面,先要进入公式编辑界面。
新建一个函数,setTitle


先使用编辑器,
直接把现在的公式拷贝进去,注释一份做参考,实际一份做改造
点击保存的时候,有报错。函数中是不能直接使用字段的。

我们做一个变量x来接后面可能的输入值,可能是字段,也可能是其他

然后我们把公式x1改掉

还是可以实现同样的效果。
前面的界面上我们看到另外一个“使用提取器”的按钮。
我们也来用一下
新建一个函数setTitle2,点击使用提取器按钮


这个就是从现有的公式中提炼成函数的,很方便吧,呵呵。
我们选中x1(为了方便演示,我把函数删掉,恢复到原来的公式内容),这时候工具会自动把数据库字段设置为参数。
点击确定后,函数就建好了,可以再进行适当编辑
其他:公式可以通过与参数的结合,实现更复杂的效果。
函数是基于公式的,公式是可以直接调用函数。
函数间可以互相调用。
函数中不能使用报表参数字段(parameterField),不能使用数据库字段
公式和运行时总计中则都可以使用。
本文中的公式相对比较基础一些,后面开始进入更复杂的阶段。
主要是分组、图表、子报表及交叉表,这些部分的处理方法与之前稍有不同
基础应用之外,还会结合一些实际场景,并且会综合之前讲解的一些内容,做一些深入。
预告:分组及多场景应用
[解决办法]sf
[解决办法]不错,很好很强大
[解决办法]
[解决办法]jf
[解决办法]丁贝莉也去了咯
支持一下.
[解决办法]晕,图片看到全身发抖了,没想到又遇到阿泰了
------解决方案--------------------
学习了
[解决办法]来学习并看美女...
好吧,我承认我上面说了假话.. 看了美女忘了学习 O(∩_∩)O~
[解决办法]来学习并看美女...
好吧,我承认我上面说了假话.. 看了美女忘了学习 O(∩_∩)O~
[解决办法]谢谢LZ是整理收藏了。
[解决办法]公式、函数……终于盼来了……
Tag!
[解决办法]收藏了
[解决办法]很好很强大
[解决办法]收藏!
[解决办法]泰哥是牛人。 向泰哥致敬
[解决办法]可以把这些做成参数,让用户来自行配置,达到用户与报表直接交互的效果,这样不是更完美?
[解决办法]及时雨,明天我就要做水晶报表了
阿泰,牛!支持
jf
[解决办法]Mark
[解决办法]很好很强大!
[解决办法] 该回复于2012-05-05 09:30:43被版主删除
[解决办法]谢谢分享!收了
[解决办法]非常感谢~~\(^o^)/~我来了~~
[解决办法]收藏!
[解决办法]mark
[解决办法]jf
[解决办法]hao
[解决办法]泰哥果然如传说中那么强大
水晶报表领域,信泰哥得永生!
[解决办法]学习下
[解决办法]up
[解决办法]收藏!
[解决办法]ChinaJoy拿了什么好东西啊?
[解决办法]up
[解决办法]本贴不收,还收何物?
[解决办法]精彩绝伦,但是看不懂。希望以后可以看懂
[解决办法]大神大神~~
[解决办法]图片看到全身发抖了,没想到又遇到阿泰了
[解决办法]感觉还不错,谢谢
[解决办法]注意力被吸引在...........美女上 ^0^!
[解决办法]不错,学习了。
[解决办法]回帖是一种美德!
------解决方案--------------------
正在做水晶报表啊,太感谢楼主的及时雨了。
[解决办法]学习了!
[解决办法]不会
[解决办法]MARK...
[解决办法]up up up up
[解决办法]发现你这个人很讲究,呵呵 谢谢了。不过更喜欢那一排美女
[解决办法]mark
[解决办法]jf
[解决办法]非常棒!!
当然,图片也非常棒!
[解决办法]支持!
[解决办法]顶顶顶顶顶顶顶顶顶顶
[解决办法]顶顶顶顶顶顶顶顶顶顶
[解决办法]楼主不如写一本关于水晶报表的书好了,我一定会买的,呵呵
[解决办法]寻找比较合适的报表工具。学习了。有不少启发
[解决办法]mark
[解决办法]不错,多谢分享
[解决办法]up
[解决办法]感觉还可以的。学习学习
[解决办法]谢谢诶,分享!
[解决办法]很好很强大。。。
有美女+代码
[解决办法]学习一下,看得不是很懂!
[解决办法]wo
[解决办法]学习 啊
[解决办法]不错,支持一下
[解决办法]好东西啊
[解决办法]太棒了。做个记录。
感谢大大分享。
[解决办法]哎呀,不加照片还好....加了就...嘿嘿。
[解决办法]ding
[解决办法]顶了
[解决办法]泰哥!你不该发那张美女图啊!
害得我完全没有兴趣看你后面写的那些技术内容了……[解决办法]jf
[解决办法]好呀……
[解决办法]一般般
[解决办法]持续关注中。。。谢谢阿泰!
[解决办法]收藏了,很好,很值得学习
[解决办法]回帖是一种美德!
[解决办法]
得永生 哈哈
[解决办法]
回帖是一种美德!
[解决办法]
回帖是一种美德!
[解决办法]
study
[解决办法]
该回复于2009-09-01 10:43:01被版主删除
[解决办法]
mark
[解决办法]
mark
[解决办法]
我本来打算研究这篇帖子一个小时的,
结果因为某张引人入胜的图片,
害我研究了一下午,
快要下班了,
[解决办法]不错哦。全都保存了呢。
[解决办法]阿泰,果然也是性情中人.
[解决办法]接分+欣赏美女+支持阿泰哥。
CR新手遇上阿泰哥,感觉找到组织了。
[解决办法]说的太对了,真是感觉遇对人了……支持泰哥,辛苦了……
[解决办法]哇~~ 头一回新鲜事: 蹲在美女面前看代码学习报表.....
[解决办法]不错
[解决办法]好东西 顶
[解决办法]喜爱 - -!