轉(zhuǎn)帖|使用教程|編輯:我只采一朵|2014-04-02 09:36:49.000|閱讀 7196 次
概述:本文跟大家分享一下我在使用過程中總結(jié)出來的水晶報表函數(shù)。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
水晶報表大家都很熟悉了,最近我也在學(xué)習(xí)這款報表,發(fā)現(xiàn)的確很強(qiáng)大,尤其是它的高效集成給我留下了很深的印象。下面是我在使用過程中總結(jié)的一些水晶報表函數(shù),分享給大家。
函數(shù)使用
1.取上一條記錄previous({tablename.fieldname});
2.取字符串中某個字符第N次出現(xiàn)前面字符 split(string,"text")[1] 例:split("報銷餐費","餐費")[1] ="報銷"
Basic公式的語法
1.數(shù)據(jù)類型
(1)字符串型:String
字符串處理有很多函數(shù),如:Left(),Right(),Mid(),Trim()
(2)數(shù)字型:Number
(3)貨幣型:Currency
Crystal Reports中提供CCur()函數(shù),可以將數(shù)值型數(shù)據(jù)轉(zhuǎn)換為貨幣型數(shù)據(jù),比如:CCur(500)。
(4)布爾型:Boolean
比如True或False,一般Yes可取代True,No可取代False。
(5)日期及時間型:Date,Time及DataTime
Date類型用于存放日期,Time類型用于存放時間,DataTime類型則可同時存放日期和時間 時間可以使用#...#來標(biāo)識如:#2001/10/1#
2.變量及初始值
變量在使用前必須使用Dim關(guān)鍵字聲明,格式為:
Dim變量名 AS 數(shù)據(jù)類型 變量命名比較靈活,但不能和BASIC語法中的關(guān)鍵字同名,關(guān)鍵字是以藍(lán)色顯示的。
變量類型可以分為以下幾種:
(1)簡單類型
(2)范圍類型
(3)用來存放簡單類型和范圍類型的數(shù)組
3.水晶報表的BASIC語法公式中只支持一維數(shù)組,且數(shù)組的下標(biāo)從1開始,這和很多的編程語言的語法規(guī)則不一樣。按照如下方式定義一個數(shù)組:
Dim 數(shù)組名(數(shù)組長度)AS數(shù)據(jù)類型
例子:Dim Week(6) AS String Week=Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun")
4.數(shù)組除了可以存放簡單數(shù)據(jù)類型數(shù)據(jù)外,還可以存放范圍數(shù)據(jù)
5.運算符
(1)布爾運算符
(2)比較運算符
(3)NULL值
(4)算術(shù)運算符
6.控制公式執(zhí)行流程的語句
(1)If-Then-Else語句
If 布爾表達(dá)式 Then
...
或則
End If
if 布爾表達(dá)式 then
...
elseif 布爾表達(dá)式 then
...
elseif 布爾表達(dá)式 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循環(huán)語句中)
有時,可能在循環(huán)語句未執(zhí)行完畢的時候, 就想先結(jié)束該循環(huán)語句的執(zhí)行。
(5)While
while 語句用來條件反復(fù)執(zhí)行一段語句,該語句基本結(jié)構(gòu)如下:
while 布爾表達(dá)式
......
end
其執(zhí)行步驟是先判斷布爾表達(dá)式是否成立,如果成立,就執(zhí)行省略號中的程序段,否則就跳出該while循環(huán)。
(6)Do
7.全局變量
上面講述的Dim語句聲明的變量都是屬于局部變量,而全局變量的語法格式如下:
Global 全局變量名 AS 變量類型 例子:Global Sdepart AS String
請記住,凡是定義為Global的全局變量,只要這些變量的名稱相同,則其所占用的內(nèi)存也相同。
8.共享變量
除了全局變量外,還有可以在主報表和子報表之間共享的變量,前面介紹的全局變量在主報表中使用同一塊內(nèi)存,而共享變量的內(nèi)存是有主報表和子報表共用,所以共享變量的定義域比全局變量更大,也就是說,共享變量不僅可以跨域公式,還可以跨域主/子報表。
定義共享變量的語法格式如下:
Shared 共享變量名 As 變量類型
同樣在主報表中定義了共享變量后,在子報表中藥引用該共享變量的時候,也需要再聲明一次。主子報表的共享變量其實也是占用同一塊內(nèi)存。
另外請記住,當(dāng)修改子報表后,如果看到報表的結(jié)果并沒有更新,這時請在報表設(shè)計區(qū)中右鍵單擊子報表控件,并在彈出的對話框中選擇“重新導(dǎo)入子報表”,這樣就能看到更新的結(jié)果了。
9.報表中公式的執(zhí)行順序
指定公式執(zhí)行的順序,可以使用函數(shù)EvaluateAfter()
例子:
EvaluateAfter(@gongshi2)
‘gongshi1的公式代碼
......
10.Cystal Reports內(nèi)建函數(shù)
水晶報表中的十幾種內(nèi)建函數(shù)
(1)字符串
Len()函數(shù):用來計算字符串的長度;
Trim():去掉字符串中的所有空格;
LTrim():去掉字符串開頭的空格;
RTrim()函數(shù):刪除字符串尾部的空格;
Ucase(“jack”)函數(shù):將字符串轉(zhuǎn)換成大寫
Lcase(“JACK”)函數(shù):將字符串轉(zhuǎn)換成小寫
Mid()Left()Right()
StrCmp(“apple”,“app”):字符串比較函數(shù),前一個是目標(biāo)字符串,后一個是比較字符串。
Instr()函數(shù):尋找字符串內(nèi)容函數(shù)
Filter()函數(shù):從數(shù)組中尋找字符串內(nèi)容
Replace()函數(shù):取代字符串內(nèi)容
StrReverse()函數(shù):字符串反轉(zhuǎn)
Split()函數(shù):分割字符串函數(shù)
Join()函數(shù):連接字符串
(2)日期時間
CurrentDate,CurrentTime,CurrentDateTime取得當(dāng)前時間
要取出日期中的年,月,日甚至?xí)r,分,秒則可以使用Year(),Month(),Day(),Hour(),Minute(),Second()函數(shù)
IsDateTime(),IsDate(),IsTime()
格式:
WeekDay(),WeekdayName()及MonthName()
格式:
DateSerial()及TimeSerial()
格式:
DateDiff()
(3)類型轉(zhuǎn)換
CBool()函數(shù):該函數(shù)僅接受Number或Currency類型的數(shù)據(jù),若給定的值不為0則返回True,否則返回False,如下例:CBool(-12.1) '返回True
CCur()函數(shù):該函數(shù)可以將Number,String類型數(shù)據(jù)轉(zhuǎn)換成Currency類型的數(shù)據(jù)
如下例:CCur(“1200”) ‘返回1200
CDbl()函數(shù):將字符串轉(zhuǎn)換成Number型的數(shù)據(jù),如下例:CDbl(“143.2”) ’返回143.2
CStr()函數(shù):該函數(shù)可以把輸入數(shù)據(jù)轉(zhuǎn)換成字符串,也可以用來格式化數(shù)據(jù)內(nèi)容,若輸入的數(shù)據(jù)是Boolean值,則返回值只有兩種“真”,“假”。若輸入的參數(shù)是Number或Currency,則可以指定的參數(shù)就非常多,具體格式請讀者們參考相關(guān)的幫助。
CDateTime()CDate()及CTime()可以使用CDateTime()CDate()CTime()將日期時間字符串,數(shù)字等轉(zhuǎn)換成DateTime,Date,Time型的數(shù)據(jù)。
(4)數(shù)組(隊列)
Array()函數(shù):用來建立數(shù)組,與Crystal語法中的MakeArray()具有相同的功能。注意Array中的數(shù)據(jù)類型要一致。
UBound()函數(shù):傳遞回數(shù)組的長度
統(tǒng)計:可以對數(shù)組中的數(shù)據(jù)進(jìn)行計算如求總和,求平均值等等。
(5)格式化
(6)判斷NULL值
判斷Null的函數(shù)格式為:IsNull(字段名)
比如下例:可檢查用戶名字是否為空:IsNull({CustomerList.Name})
請注意,Null與空字符串時不一樣的,Null指該字段中沒有值。另外,還有PreviousIsNull()及NextIsNull()可檢查上一條或則下一條字段值是否為空值。
(7)打印狀態(tài)
轉(zhuǎn)自博客園
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件