水晶報表常用公式

  • 2019 年 11 月 7 日
  • 筆記

一.公式欄位使用示例:

A.計量單位轉換 這是一個非常簡單的例子,主要是為了演示在公式中進行不同變數類型的轉換和計算。 有時資料庫欄位的單位和報表中顯示的單位不同,我們需要進行計量單位之間的轉換,這時就離不開公式的使用。比如,我們的資料庫中有一個Length欄位,它記錄以米為單位的長度,而在列印時需要以厘米為單位,我們就可以使用下面的函數。 ToText({Order Details.Length} *100) + "厘米" 這裡的ToText函數就是轉換數字型為字元型。常用的轉換函數還有ToNumber等。

B.中文星期 在這個例子中我們將演示如何進行字元串操作。 我們在列印報表時經常會遇到顯示中文星期的問題。Crystal Reports有DateOfWeek函數可以判斷一個日期是星期幾,比如DateOfWeek返回4時表示星期三。我們可以使用下面的公式來顯示中文星期。這裡的Today函數只是一個示例,你可以將其修改為你所需的日期函數或欄位。 StringVar x; NumberVar n; x:="日一二三四五六"; n:=DayOfWeek (Today); x:="星期"+x[2*n-1 to 2*n] 前兩行,我們定義了字元串變數x和數字變數n。一個公式可以有很多行,但只有最後一行的計算結果才會作為整個公式的結果列印在報表中。

C.條件計算 在這個例子中我們重點演示如何使用If-Then-Else操作符。 條件計算在報表中使用得非常普遍。例如,我們要根據用戶購買的總價格決定折扣的多少。我們假定用戶購買200元以下的產品,不打折;200元到1000元提供5%的折扣;1000元以上提供7%的折扣。我們可以使用下面的公式計算最終用戶需要付多少錢。 CurrencyVar cValue; cValue := {Order Details.UnitPrice} *{Order Details.Quantity}; //計算總價格 If cValue < 200 Then cValue Else If cValue < 1000 Then cValue * 0.95 Else cValue * 0.93

D.條件統計 Crystal Reports提供了一些基本的統計功能,可以按分組進行統計。但是實際應用中的統計往往更為複雜。比如,我們需要根據一定的條件進行統計。假定我們要統計每組中單價超過10元的商品的銷售數量。我們可以先在報表的Detail部分插入一個公式。假定該公式名字為ConditionSum,在公式內輸入如下內容: If {Order Details.UnitPrice} < 10 Then 0 Else {Order Details.Quantity}

二.公式欄位語法:

公式欄位的語法比較簡單,但支援的操作符和函數非常多。在公式中可以使用變數、常量。也可以引用資料庫欄位,其格式為:{庫名.欄位名} A.操作符   水晶報表支援大量的操作符,有些是常見的,也有些是Crystal Reports特有的。

B.算術操作符   水晶報表支援+、-、*、/,還支援%(百分比)操作符,如100 % 500 = 20。

C.轉換操作符   轉換操作符為$,它將數字轉換為貨幣型,這樣水晶報表會按照報表中的貨幣格式設置列印數據。

D.比較操作符   水晶報表支援的比較操作符與Visual Basic相同:=、<>、<、>、>=、<=。

E.字元串操作符   字元串連接的操作符為「+」。 從字元串中取指定的字元使用「[]」操作符,相當於Visual Basic的Mid函數。「[]」內為字元的位置,第一個字元的編號為1。如:{file.ItemNumber} [4 to 5] 判斷一個字元串是否包括在另一個字元串使用in操作符。比如:"c" in "pcc"返回True。

F.範圍操作符   水晶報表允許用戶建立一個範圍,並判斷數據是否包括在指定範圍內。如「100.00 to 250.00」包括100到250之間的數據,而使用「50 in (100 to 250)」可以判斷50是否在指定的範圍內。

G.布爾操作符   布爾操作符包括And、Not和Or。

H.數組操作符   水晶報表支援數組,比如[100,200,300,400]是一個由4個元素組成的數組。可以使用in操作符判定數據是否是一個數組的元素,如:{file.State} in ["CA", "HI", "AK"]。

I.匹配操作符   匹配操作符包括StartsWith和Like。StartsWith判斷一個字元串是否以指定的字元串開頭,如"PCC" startwith "P"返回True。Like操作符的用法類似Visual Basic,也是將字元串表達式和通配符表達式中的樣式做比較。

J.其他操作符 另一個重要的操作符是If…Then … Else …,就是我們所熟悉的條件判斷,在我們後面得示例部分可以看到這個操作符的威力。 如果要為變數賦值,需要使用「:=」符號,這是與Visual Basic不同的。 在公式中也可以加上注釋以方便閱讀。注釋符號為「//」,「//」符號後面的內容將被忽略。 公式中也可以包括多個語句行,行尾使用「;」分割。

K.函數   水晶報表支援大量函數,包括數學函數、統計函數、日期函數、字元串函數、數組函數等等。在水晶報表的幫助文件對每個函數都有詳細的介紹。