函數使用 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)、打印狀態