水晶报表公式(转)

一、公式组件
二、公式语法
三、公式类型
----------------------------------------------------------------
公式包含两个关键部分:组件和语法。组件是创建公式所添加的部分,而语法是组织组件所遵循的规则。
在 Crystal Reports 中有几种不同种类的公式:报表、格式化、选定、搜索、运行总计条件和警报公式。报表中的多数公式为报表公式和条件格式化公式。
----------------------------------------------------------------
一、公式组件
在 Crystal Reports 中创建公式与在任何电子数据表应用程序中创建公式类似。可以在公式中使用下列组件:

字段
示例:{客户.客户名}、{客户.去年销售额}

数字
示例:1、2、3.1416

Text
示例:“数量”、“:”、“您的文本”

运算符
示例:+(加)、/(除)、-x(求负)

运算符是可以在公式中使用的操作。


函数
示例:Round (x)、Trim (x)

函数执行求平均值、求和与计数之类的计算。列出所有可用的函数,其参数一并列出,并根据用途排列。

自定义函数
示例:cdFirstDayofMonth、cdStatutoryHolidays

自定义函数提供了一种共享和重复使用公式逻辑的途径。它们可存储在 Crystal 储备库中,而后可将其添加到报表中。一旦自定义函数添加到报表后,当创建公式时,用户就可在“公式专家”中使用自定义函数。

控制结构
示例:“If”和“Select”、“For”循环

组字段值
示例:Average (fld, condFld)、Sum (fld, condFld, "条件")

组字段值对组进行汇总。例如,可以使用组字段值来得出各个组在总计中所占百分比。
其它公式
示例:{@GrossProfit}、{@QUOTA}

有关详细信息,请参阅公式语法。
----------------------------------------------------------------
二、公式语法
语法规则用于创建正确的公式。一些基本规则有:

将文本字符串括在引号内。
将参数括在括号内(在合适的位置)。
引用的公式使用前导 @ 符号标识。
Crystal 语法和 Basic 语法
创建公式时,可以选择使用 Crystal 语法或 Basic 语法。几乎任何使用某种语法编写的公式都可以使用另一种语法来编写。报表可以包含使用 Crystal 语法的公式,也可以包含使用 Basic 语法的公式。

Crystal 语法是包括在 Crystal Reports 的所有版本中的公式语言。

如果熟悉 Microsoft Visual Basic 或 Basic 的其他版本,则您可能更熟悉 Basic 语法。总而言之,除了有特定扩展以处理报表外,Basic 语法以 Visual Basic 为模型。

如果您已经习惯了 Crystal 语法,则可以继续使用它,并且可受益于由 Visual Basic 所产生的新函数、运算符和控制结构。

注意:    

记录选定和组选定公式不能用 Basic 语法编写。
使用 Basic 语法不会减慢报表的处理过程。使用 Basic 语法公式的报表可以在运行 Crystal Reports 的任何机器上运行。
使用 Basic 语法公式无需同报表一起分发任何附加文件。
相关主题
若要了解 Basic 语法,请参阅使用 Basic 语法创建公式。

若要了解 Crystal 语法,请参阅使用 Crystal 语法创建公式。
----------------------------------------------------------------
三、公式类型
在 Crystal Reports 中有几种不同种类的公式:报表、格式化、选定、搜索、运行总计条件和警报公式。报表中的多数公式为报表公式和条件格式化公式。

报表公式
报表公式是在报表中创建的单独公式。例如,计算订购日期与发货日期之间天数的公式即为报表公式。

条件格式化公式
格式化公式更改报表的布局和设计,以及文本、数据库字段、对象或整个报表节的外观。通过“格式编辑器”来设置文本的格式。如果需要创建格式化公式,请从“格式编辑器”访问公式工作室。请参阅使用条件格式化。

选定公式
选定公式指定并限制在报表中出现的记录和组。您可直接输入这些公式,或者可使用“选择专家”指定选定内容。Crystal Reports 接着将生成记录选定和组选定公式。可以选择手动编辑这些公式,但必须使用 Crystal 语法。请参阅选择记录。

搜索公式
搜索公式帮助您在报表中定位数据。与选定公式类似,一般您不需要直接输入这些公式,而是使用“搜索专家”来指定搜索判据。Crystal Reports 生成该公式。可以选择手动编辑这些公式,但必须使用 Crystal 语法。

注意:    如果您已经了解 Basic 语法,则只需要了解少量的 Crystal 语法便可以修改大多数选定公式和搜索公式。

运行总计条件公式
运行总计条件公式使您能够定义运行总计求值或重置所依据的条件。请参阅创建条件运行总计。

警报公式
警报公式帮助您定义报表警报的条件和消息。请参阅关于报表警报。


水晶报表常用公式:
1、创建计算字段添加到报表
2、格式化报表上的文本
3、提取文本字符串的一个部分或多个部分
4、提取日期中的部分
5、使用自定义函数
----------------------------------------------------------------
公式有多种用途。如果需要特殊的数据操作,可以使用公式来完成。
----------------------------------------------------------------
1、创建计算字段添加到报表
计算打折 15% 后的价格:

Crystal 语法示例:
{订单细节.单价}*.85

VB 语法示例:
formula = {订单细节.单价}*.85
----------------------------------------------------------------
2、格式化报表上的文本
将“客户名称”字段中的所有值更改为大写字母:

Crystal 语法示例:
UpperCase ({客户.客户姓名})

VB语法示例:
formula = Ucase ({客户.客户姓名})
----------------------------------------------------------------
3、提取文本字符串的一个部分或多个部分
提取客户名称的第一个字母:

Crystal 语法示例:
{客户.客户姓名}[1]

VB语法示例:
formula = {客户.客户姓名} (1)
----------------------------------------------------------------
4、提取日期中的部分:
确定发出订单的月份:

Crystal 语法示例:
Month ({订单.订单日期})

VB语法示例:
formula = Month ({订单.订单日期})
----------------------------------------------------------------
5、使用自定义函数
将 $500 从美国货币转换为加拿大货币:

Crystal 语法示例:
cdConvertUSToCanadian (500)

VB 语法示例:
formula = cdConvertUSToCanadian (500)

水晶报表警报
目录:
一、关于报表警报
二、使用报表警报
1、创建报表警报
2、编辑报表警报
3、删除报表警报
4、查看报表警报
5、在公式中引用报表警报

----------------------------------------------------------------
一、关于报表警报
报表警报是在 Crystal Reports 中创建的、当报表数据遇到特定条件时出现的自定义消息。报表警报可以指示用户将采取的操作或有关报表数据的信息。

报表警报是用对指定条件进行计算的公式创建的。如果条件为真,则触发警报并显示出警报消息。消息可以是文本字符串或者是兼有文本和报表字段的公式。

一旦触发报表警报,则直到您刷新报表数据时才会再次对该警报进行计算。

报表警报是针对每个报表的,因此您需要决定何时使用它们,何时不使用它们。报表警报对于指出重要信息(如高于或低于某一界限的销售额)很有用。而且由于警报消息是由您创建的,因此也可针对您的数据。
----------------------------------------------------------------
二、使用报表警报
着重介绍为使用报表警报而需执行的任务:

1、创建报表警报
2、编辑报表警报
3、删除报表警报
4、查看报表警报
5、在公式中引用报表警报
----------------------------------------------
1、创建报表警报
创建报表警报时,必须完成下列三个步骤:

命名警报。
定义触发警报的条件。
创建希望在触发警报时显示的消息(此步骤是可选的)。
创建报表警报
在“报表”菜单上,指向“警报”,然后单击“创建或修改警报”。
出现“创建警报”对话框。

单击“新建”。
出现“创建警报”对话框。

在“名称”框中输入新警报的名称。
在“消息”框中输入警报消息。
“消息”框使您可以输入用作默认值的消息。如果希望每次触发警报时显示相同的消息,请在“消息”框中输入该消息。

然而,如果希望使用公式以便用数据元素自定义消息,请参阅下一个步骤。

如果希望使用公式创建警报消息,请单击“消息”框右侧的公式按钮。
出现公式工作室。有关如何使用编辑器的信息,请参阅使用公式编辑器。

输入警报消息公式。
例如,如果希望看到消息“Country is a star performer”(其中 Country 是某个具体国家/地区的名称),可以创建下列公式:

GroupName ({Customer.Country}) + " is a star performer"

注意:    

警报消息公式的结果必须是一个字符串。
DefaultAttribute 函数可用于引用添加到“消息”框中的消息。例如,如果“消息”框中的消息是“is a star performer”,则警报消息公式可以是:
GroupName ({客户.国家或地区}) + DefaultAttribute

该公式依赖于您在“消息”框中输入的文本,那些文本成为 DefaultAttribute。

消息条件公式可以使用 Crystal 语法或 Basic 语法来创建。
单击“条件”。
随即出现公式工作室。

输入警报条件公式。
警报公式可以基于重复性记录或基于汇总字段,但不能基于打印时间字段(如运行总计或打印时间公式)。警报公式不能有共享变量。

如果警报公式基于汇总字段,那么所使用的任何重复性字段必须在汇总字段中保持不变。例如,如果按照“国家/地区”、“地区”和“城市”分组,可以创建如下警报:

Sum ({客户.去年销售额}, {客户.地区})

在本例中,您的公式可以引用“国家/地区”或“地区”,但不能引用“城市”或“客户姓名”,因为它们是变化的。

注意:    警报条件公式可以使用 Crystal 语法或 Basic 语法来创建。

如果不希望计算警报,请清除“启用”复选框。
否则,保留它的选中状态。

单击“确定”保存警报。
随即返回到“创建警报”对话框,并且列出了您的新警报。您可以看到它的名称和状态(“启用”或“禁用”)。



在“创建警报”对话框中仅显示已启用和已禁用的警报。如果触发警报,则可以在“报表警报”对话框中看到它。
----------------------------------------------
2、编辑报表警报
在“报表”菜单上,指向“警报”,然后单击“创建或修改警报”。
在“创建警报”对话框中,选择要编辑的警报,然后单击“编辑”。
提示:    双击警报也可以对它进行编辑。

在“编辑警报”对话框中进行所需的更改。
单击“确定”保存更改。
注意:    如果已经触发警报,编辑它时会将其从“报表警报”对话框中删除。
----------------------------------------------
3、删除报表警报
在“报表”菜单上,指向“警报”,然后单击“创建或修改警报”。
在“创建警报”对话框中,选择要删除的警报,然后单击“删除”。
所选警报随即从“创建警报”对话框中删除。

注意:    如果已经触发警报,删除它时还会将其从“报表警报”对话框中删除。
----------------------------------------------
4、查看报表警报
可以通过下列方式查看触发的报表警报:

刷新报表数据。
从“报表”菜单的“警报”子菜单中选择“已触发的警报”。
注意:    如果希望在报表数据刷新时查看警报,必须在“选项”对话框的“建立报表”选项卡上选择“刷新时显示警报”(该选项在“报表选项”对话框中也可用)。

查看报表警报
在“报表”菜单上,指向“警报”,然后单击“已触发的警报”。
出现“报表警报”对话框。



选择要查看其记录的警报。
单击“查看记录”。
一个新报表选项卡打开,显示出触发警报的报表记录。如果记录是隐藏的,则记录组会显示出来,但不进行深化。

注意:    如果单击“查看记录”按钮之前选择的已触发警报不止一个,则结果是通过对所选警报执行 AND 布尔运算来生成的。

若要返回到“报表警报”对话框,请单击“预览”选项卡。
单击“关闭”关闭“报表警报”对话框。
----------------------------------------------
5、在公式中引用报表警报
可以在公式中引用警报。引用警报的任何公式都将成为打印时间公式。

有下列函数可用:

IsAlertEnabled( )
IsAlertTriggered( )
AlertMessage( )
这些函数的行为与在“创建警报”对话框中创建的警报相同:

IsAlertTriggered("AlertName") 仅对于触发警报的记录为真。
AlertMessage("AlertName") 在警报为真时显示记录的消息。
因为警报不是字段对象(不能把它们放到报表中),所以它们的表示形式与公式工作室中的报表字段不同。在“函数”树中,可以看到函数本身所在的“警报”标题。可用警报按名称列在此标题下方。
原文地址:https://www.cnblogs.com/zhangpengshou/p/1528588.html