




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文的主题是:函数与公式、运行时总计。 本文还是以基础讲解为主,后面的一些实际场景中会有具体的使用 1:公式 公式可以说是水晶报表里精髓,其重要性有点像Excel的宏一样。 公式基本上可以分为两类,一是格式化类。一是运算类。当然,格式化的公式也是需要运算的。 水晶报表的一些内置的功能,本身也是依赖于公式的,只是做了封装。 公式有两种语法:crystal语法和Basic语法,没有根本性差异。 如果你之前用过Basic类的语言,那么这个就非常容易了。 可以从此处下载一个独立版本的水晶报表帮助文档,方便查阅。 水晶报表常用资源导引和下载格式化类主要出现在如下位置: 比如,我们要把某个列中值等于12的值设置为蓝色,等于15的设置为红色,其余的设置为黑色。 在字段上点右键,格式化该字段, 这个图上的(x+2)后面就是一个公式,如果里面没有内容,这个图标就是这种默认的颜色。 如果里面有内容,则图标会变成红色。 本文的示例数据延续前文中的例子 实例1,如果用户分数等于12,则显示为蓝色,如果等于15分则显示为蓝色,其他显示为黑色。 点击上图中的(x+2),进入公式编辑界面。 我抓了个大图,里面做了一些标记。 公式本身就比较简单了,不必再进行说明。 注意前面的图上左上角的两个指向,x+2是指检查该公式是否正确,检查完毕后停留在当前界面 保存并关闭,则是先检查后保存公式并且关闭本界面,回到前一界面上。 好了,我们再运行一下程序,效果就出来了。 实例2,控制每3条记录换页 进入节专家 点中“详细资料节”,勾选后面的“在后面新建页”,然后编辑后面的公式为 如果公式有错误,则会有类似下面的提示,当然,根据错误的不同,提示也不一样 再预览一下,之前我们显示1页的数据,已经分页了。注意上面的 1+,说明页数多于一页。 但是并没有显示实际页数,这是水晶报表的一个优化机制。如果是多页的数据,它只显示第一页 有点类似于我们的一些数据库分页操作一样。但是这个也带来很多批评。 而实际上,解决方法也是有的。 就是这样 C# code CrystalReportViewer1.ReportSource = myReport;CrystalReportViewer1.ShowLastPage();CrystalReportViewer1.ShowFirstPage();实际上也是模拟了我们的一个手工动作,就是先点击跳到最后一页,然后再切到第一页。 这个动作用户是感觉不到的,尚可以接受。 前面的是两个格式化类的公式,下面说一下运算类公式。 实例3,如果分数 15则显示不合格,等于15则为合格,大于15则为优秀 这个就是对数据的再加工了。 新建一个公式字段x1 然后把x1拖到界面上,放到原来数据的后面,预览后就显示 实例4,代码中修改公式 新建一个公式字段x2,里面就放一个现有字段即可 显示效果如下 恩,没什么感觉吧。 另外做一个公式字段x2title,作为x2这一列的题头 然后代码里控制一下: C# code myReport.DataDefinition.FormulaFieldsx2.Text = RPT_CR_TEST1.Scores;myReport.DataDefinition.FormulaFieldsx2title.Text = 得分情况;特别注意的是,原公式中返回的是字符串的话,要把引号带进去。 myReport.DataDefinition.FormulaFieldsx2title.Text = 得分情况; 再看效果 这个可以实时变化的字段,有很多用处的。 用过的朋友应该记得,在分组、图表、交叉表的时候,都可以使用公式字段作为运算字段的 如果我们在代码中控制公式里的字段变化,那么自然也达到了动态分组、动态图表等效果了 类似的应用可以参考: 在水晶报表中实现任意选择指定字段显示-模板及C#升级版 用公式实现动态设置图表的轴数据项 这个是单一公式,公式之间可以嵌套使用,有时候也可以结合全局变量进行多公式协作 这些在后面的一些实际应用场景中会讲到。 2:运行时总计 我们知道报表里内置了求和和计数等汇总功能,但是如何只求部分数据的和呢? 实例5: 求大于15分的所有分数的和,求大于15分的人的个数,并求得平均值 新建一个运行时总计字段Rtotal0,这个用于获取分数和 注意在“求值”的位置,编辑后面的公式: 新建一个运行时总计字段Rtotal1,这个用于获取人数 注意这个求值也是用了公式的,所以(x+2)是红色的,公式的内容跟Rtotal0一样。 因为都是同样的规则。 新建一个公式字段x3, C# code /定义一个字符串变量stringvar s1;/定在一个数值型变量numbervar n1;s1 := 得分大于15分的所有人的平均得分为;/对于If Else逻辑来说,每个分支逻辑返回的数据类型,都应该是一样的/进行一个保护,防止分母为0if #RTotal1=0 thens1+-else/一个分支逻辑有多条语句,可以用括号括起来,这样更加清晰(/计算平均值n1 := #RTotal0/#RTotal1;s1+cstr(n1,2);)这个公式是个小典型,里面用到了变量。 实质上跟我们在程序里用的变量差别不大。 因为考虑到求平均值时可能出现分母为0的情况,所以进行了一个保护。 注意公式的默认语法是Crystal语法,其赋值方式为 x:=5,x=5 则是一个逻辑判断 (有时候又可以混用,不过最好按照规则走) 看一下实际的运行效果 运行时总计,就是数据从上往下显示时的一种数据处理, 他的数据只能从上往下走,按照一定的规则处理其中的一些数据。 它一定要出现在数据的下面(或与数据平行),而不能与其他Max,Sum等聚合函数一样可以出现在数据之前。 实质上,运行时总计,本身就是公式的一种特殊应用。 3:函数 函数其实也是基于公式的,跟我们普通程序一样。如果有很多重复的公式,那么可以提炼成函数进行复用。 我们就以前面的公式x1进行改造。 模板上不能直接进入函数编辑界面,先要进入公式编辑界面。 新建一个函数,setTitle 先使用编辑器, 直接把现在的公式拷贝进去,注释一份做参考,实际一份做改造 点击保存的时候,有报错。函数中是不能直接使用字段的。 我们做一个变量x来接后面可能的输入值,可能是字段,也可能是其他 然后我们把公式x1改掉 还是可以实现同样的效果。 前面的界面上我们看到另外一个“使用提取器”的按钮。 我们也来用一下 新建一个函数setTitle2,点击使用提取器按钮 这个就是从现有的公式中提炼成函数的,很方便吧,呵呵。 我们选中x1(为了方便演示,我把函数删掉,恢复到原来的公式内容),这时候工具会自动把数据库字段设置为参数。 点击确定后,函数就建好了,可以再进行适当编辑 其他: 公式可以通过与参数的结合,实现更复杂的效果。 函数是基于公式的,公式是可以直接调用函数。 函数间可以互相调用。 函数中不能使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解析卷沪科版9年级下册期末测试卷及答案详解
- 智能税务筹划创新创业项目商业计划书
- 井矿盐卤水净化工抗压考核试卷及答案
- 邮政行业职业技能鉴定常考点试卷附参考答案详解【完整版】
- 直播内容智能字幕生成技术创新创业项目商业计划书
- 铁合金成品工技能比武考核试卷及答案
- 焦结炉工理论知识考核试卷及答案
- 钽碳还原火法冶炼工入职考核试卷及答案
- 碳化钨制备工培训考核试卷及答案
- 烧结原料工安全规范考核试卷及答案
- 中华护理学会团体标准|2024 针刺伤预防与处理
- 肌少症知识试题及答案
- 北京市石景山区2025年中考一模英语试题(含答案)
- 2025年教师参加初中英语新教材培训心得体会
- 2025-2030中国陶瓷涂料行业市场发展趋势与前景展望战略研究报告
- 精神科急救知识培训课件
- 2025鸡舍建设承包合同书样本版
- 【中信建投】信息技术-人工智能行业AI产品深度拆解(系列1)-可灵:头部AI视频产品
- 2025年中考化学一轮复习全册1-12单元22个必考实验大全(背诵+默写)含答案
- 水电站优化调度培训课件
- DBJ04T 447-2023 装配式农村住房建筑技术标准
评论
0/150
提交评论