水晶报表函数

函数使用

1.取上一条记录previous({tablename.fieldname});

2.取字符串中某个字符第N次出现前面字符 split(string,"text")[1]  例:split("报销餐费","餐费")[1] ="报销"

Basic公式的语法

1、数据类型

(1)、字符串型:String

字符串处理有很多函数,如:Left(),Right(),Mid(),Trim()

(2)、数字型:Number

(3)、货币型:Currency

Crystal Reports中提供CCur()函数,可以将数值型数据转换为货币型数据,比如:CCur(500)。

(4)、布尔型:Boolean

比如True或False,一般Yes可取代True,No可取代False。

(5)、日期及时间型:Date,Time及DataTime

Date类型用于存放日期,Time类型用于存放时间,DataTime类型则可同时存放日期和时间       时间可以使用#...#来标识如:#2001/10/1#

2、变量及初始值

变量在使用前必须使用Dim关键字声明,格式为:

Dim变量名 AS 数据类型 变量命名比较灵活,但不能和BASIC语法中的关键字同名,关键字是以蓝色显示的。

变量类型可以分为以下几种:

(1)、简单类型

(2)、范围类型

(3)、用来存放简单类型和范围类型的数组

3、水晶报表的BASIC语法公式中只支持一维数组,且数组的下标从1开始,这和很多的编程语言的语法规则不一样。按照如下方式定义一个数组:

Dim 数组名(数组长度)AS数据类型

例子:Dim Week(6) AS String        Week=Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun")

4、数组除了可以存放简单数据类型数据外,还可以存放范围数据

5、运算符

(1)、布尔运算符

  Not:产生相反的效果   And:逻辑与    Or:逻辑或    Xor:异或

  Eqv:(a Eqv b,a和b两者值相同的时候,运算结果为真)

  Imp:(a Imp b,除a为真,b为假外,其他运算结果都为真)

(2)、比较运算符

=:

<>:

<:

<=:

>:

>=:

(3)、NULL值

(4)、算术运算符

+:

-:

*:

/:

\:

Mod:

-:

^:

6、控制公式执行流程的语句

(1)、If-Then-Else语句

If 布尔表达式 Then

...

或则

End If

if 布尔表达式 then

...

elseif 布尔表达式 then

...

elseif 布尔表达式 then

...

else

...

endif

(2)、Select Case语句

Select Case 变量

Case 条件1

程序

Case 条件2

程序

Case Else

程序

End Select

(3)、For/Next语句

For I=1 To n

....

Next I

(4)、Exit For(只用于For循环语句中)

有时,可能在循环语句未执行完毕的时候, 就想先结束该循环语句的执行。

(5)、While

while 语句用来条件反复执行一段语句,该语句基本结构如下:

while 布尔表达式

......

end

其执行步骤是先判断布尔表达式是否成立,如果成立,就执行省略号中的程序段,否则就跳出该while循环。

(6)、Do

7、全局变量

上面讲述的Dim语句声明的变量都是属于局部变量,而全局变量的语法格式如下:

Global 全局变量名 AS 变量类型 例子:Global Sdepart AS String

请记住,凡是定义为Global的全局变量,只要这些变量的名称相同,则其所占用的内存也相同。

8、共享变量

除了全局变量外,还有可以在主报表和子报表之间共享的变量,前面介绍的全局变量在主报表中使用同一块内存,而共享变量的内存是有主报表和子报表共用,所以共享变量的定义域比全局变量更大,也就是说,共享变量不仅可以跨域公式,还可以跨域主/子报表。

定义共享变量的语法格式如下:

Shared 共享变量名 As 变量类型

同样在主报表中定义了共享变量后,在子报表中药引用该共享变量的时候,也需要再声明一次。主子报表的共享变量其实也是占用同一块内存。

另外请记住,当修改子报表后,如果看到报表的结果并没有更新,这时请在报表设计区中右键单击子报表控件,并在弹出的对话框中选择“重新导入子报表”,这样就能看到更新的结果了。

9、报表中公式的执行顺序

指定公式执行的顺序,可以使用函数EvaluateAfter()

例子:

EvaluateAfter(@gongshi2)

‘gongshi1的公式代码

......

10、Cystal Reports内建函数

水晶报表中的十几种内建函数

(1)、字符串

Len()函数:用来计算字符串的长度;

Trim():去掉字符串中的所有空格;

LTrim():去掉字符串开头的空格;

RTrim()函数:删除字符串尾部的空格;

Ucase(“jack”)函数:将字符串转换成大写

Lcase(“JACK”)函数:将字符串转换成小写

Mid()、Left()、Right()

StrCmp(“apple”,“app”):字符串比较函数,前一个是目标字符串,后一个是比较字符串。

Instr()函数:寻找字符串内容函数

Filter()函数:从数组中寻找字符串内容

Replace()函数:取代字符串内容

StrReverse()函数:字符串反转

Split()函数:分割字符串函数

Join()函数:连接字符串

(2)、日期时间

CurrentDate,CurrentTime,CurrentDateTime取得当前时间

要取出日期中的年,月,日甚至时,分,秒则可以使用Year(),Month(),Day(),Hour(),Minute(),Second()函数

IsDateTime(),IsDate(),IsTime()

格式:

WeekDay(),WeekdayName()及MonthName()

格式:

DateSerial()及TimeSerial()

格式:

DateDiff()

(3)、类型转换

CBool()函数:该函数仅接受Number或Currency类型的数据,若给定的值不为0则返回True,否则返回False,如下例:CBool(-12.1) ‘返回True

CCur()函数:该函数可以将Number,String类型数据转换成Currency类型的数据

如下例:CCur(“1200”) ‘返回1200

CDbl()函数:将字符串转换成Number型的数据,如下例:CDbl(“143.2”) ’返回143.2

CStr()函数:该函数可以把输入数据转换成字符串,也可以用来格式化数据内容,若输入的数据是Boolean值,则返回值只有两种“真”,“假”。若输入的参数是Number或Currency,则可以指定的参数就非常多,具体格式请读者们参考相关的帮助。

CDateTime()、CDate()及CTime()可以使用CDateTime()、CDate()、CTime()将日期时间字符串,数字等转换成DateTime,Date,Time型的数据。

(4)、数组(队列)

Array()函数:用来建立数组,与Crystal语法中的MakeArray()具有相同的功能。注意Array中的数据类型要一致。

UBound()函数:传递回数组的长度

统计:可以对数组中的数据进行计算如求总和,求平均值等等。

(5)、格式化

(6)、判断NULL值

判断Null的函数格式为:IsNull(字段名)

比如下例:可检查用户名字是否为空:IsNull({CustomerList.Name})

请注意,Null与空字符串时不一样的,Null指该字段中没有值。另外,还有PreviousIsNull()及NextIsNull()可检查上一条或则下一条字段值是否为空值。

(7)、打印状态

水晶报表函数

时间: 2024-08-06 01:07:51

水晶报表函数的相关文章

用水晶报表做条码打印

不知道各位有没有直接在WORD或EXCEL里直接设置过条码,然后打印出来? 如果直接把内容设置为条码字体,打印出来后是扫描枪是无法读取的. 我们都知道要在内容前后加上"*"(这里和""只起引用,实际不用). 当然,这种只是39码的起始字符. 但在实际应用途中,39码往往不能够满足要求,需要打印成CODE128码,但这时候就不能简单的在打印内容前后加入"*"后设置为CODE128字体就可以了. 这需要通过算法添加不同的起始符. 下面结合我在实际的应

Asp.Net中使用水晶报表

Asp.Net中使用水晶报表(上) 在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心.一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍. 这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯路.为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Ne

2019-1-17水晶报表技巧总结【2】

第一条:水晶报表分组分页且每页最多显示N条记录 要求:1.详细节最多5条记录(不能超过5条):           2.无论前一组是否满5条记录,每个新组都要另起一页            3.可以显示组内分页的情况,即:显示一个组被分为几页并且当前是第几页 我们知道每页最多显示N条的控制方法,打开节专家,在详细节后面新建页公式编辑:RecordNumber mod N = 0 RecordNumber即记录数,无论分组与否,是自动随记录递增的,所以在这里,我们不能用RecordNumber,而

关于水晶报表的一些错误

运行程序发现未能加载水晶报表的一些文件,其实自从vs2005开始以后的版本就已经不自带水晶报表的插件了,因此需要去下载,现在提供下载的东西 这么多总有一款适合你的 ,当遇到无法加载水晶报表的某些文件时的错误时不妨找到这些文件,安装后试试,如果找不到可以M我.

C# 用vs2008连接SQL数据库做动态水晶报表

博主是个还在上大学的新手,如果有什么说错的地方请务必帮我指出来,谢谢! 想要完成一个能够动态改变其中数据的水晶报表,可以通过创建一个 数据的中转站来存储和输出数据的方式. 借由这个中转站,我们可以通过为它动态输入数据,然后再将数据导出到水晶报表,来达到得到有动态数据的水晶报表的目的. 仅在vs2008中,很多它自带的应用也可以达到中转站的作用,比如数组,数据集等. 博主最近刚在学SQL所以尝试了用VS连接数据库来做水晶报表. 1.首先,博主在SQL中创建了名为xxs的数据库,然后再在数据库xxs

水晶报表 Crystal Report 调用存储过程时出错 找不到表 ,解决方法。

用 CrystalReportViewer1 控件在asp.net的网页上显示报表,如果做报表时调用数据表数据的方式调用是可以成功的,但报表是用存储过程获取数据方式会出现以下错误: 找不到表'RptOpenCheck;1' . 文件 G:\TEMP\FO-OpenCheck {6D191F06-DECF-4A25-88FC-8553E3D435AA}.rpt 内出错: 找不到表. Error: 未将对象引用设置到对象的实例. The table 'RptOpenCheck;1' could no

在水晶报表( Crystal Reports)中插入条形码(附视频)

水晶报表( Crystal Reports)是当今商业市场上最流行的报表环境之一.跨国公司利用水晶报表( Crystal Reports)来生成多种数据源的报表,为业务分析.战略规划和库存控制等方面提供了强大的洞察力.同时水晶报表( Crystal Reports)中也时常引入条形码技术.虽然很多条形码公司提供了条码字体或.NET控件来满足这方面的需求,然而客户发现这些解决方案十分繁琐.复杂而且价格高昂. 2010年,IDAutomation获取了一项特殊条码生成器对象的专利---Native

asp.net中使用水晶报表 ---使用向导

编写环境 vs2013,sqlserver2012 由于我们安装的2013没有水晶报表,所以需要我们手动的去下载并安装 下载地址为http://www.aspsnippets.com/Articles/Download-Crystal-Reports-for-Visual-Studio-2013.aspx 然后我们就来编写我们的水晶报表,在编写前我们需要了解的是水晶报表有两种方式 1.pull 拉 拉的意思就是说,当你用的时候就连接数据库然后返回数据 2.push 推 推的意思就是保存在本地,要

(转)VS2010结合水晶报表做条码标签打印功能

本文转载自:http://blog.sina.com.cn/s/blog_552ca1400100y6dd.html 先来个功能效果图: 大家都知道VS2005和VS2008软件本身是包含水晶报表插件的,而新版本的VS2010去掉了SAP水晶报表的插件,想要在VS2010中使用水晶报表首先要下载SAP的插件CRforVS_13_0.exe,我这下载的是13版本的. 下载完成后安装,现在就可以在VS2010里面使用了,哈哈. 1.准备工作,条码实现 具体如何实现条码,这里不再赘述,详细请参考:ht