在建立運算式時,使用 ColumnName 屬性來參考資料行。例如,如果一個資料行的 ColumnName 是 "UnitPrice",而另一個是 "Quantity",則運算式將會如下所示:
"UnitPrice * Quantity"
注意事項: |
|---|
如果運算式中使用了資料行,則這個運算式對該資料行具有相依性。如果相依的資料行重新命名或刪除,並不會擲回例外狀況。當存取這個已中斷的運算式資料行時,則會擲回例外狀況。 |
在建立篩選條件的運算式時,將字串放在英文單引號之中:
"LastName = 'Jones'"
下列字元是特殊字元,如以下解釋所述,如果這些字元用在資料行名稱中,則必須逸出:
\n (新行字元)
\t (定位字元)
\r (歸位字元)
~
(
)
#
\
/
=
>
<
+
-
*
%
&
|
^
'
"
[
]
如果資料行名稱含有上述其中一個字元,則名稱必須放在括號之中。例如,若要在運算式中使用命名為 "Column#" 的資料行,你應該寫成 "[Column#]"。
Total * [Column#]
因為括號是特殊字元,所以如果它是資料行名稱的部分,則你必須使用斜線 ("\") 來逸出括號。例如,命名為 "Column[]" 的資料行將會寫成:
Total * [Column[\]]
(只有第二個括號必須逸出)。
USER-DEFINED VALUES
使用者定義的值可以用在運算式中,與資料行值進行比較。字串值應該放在英文單引號之中。日期值應該依據資料提供者 (Data Provider) 的差異而放在井字號 (#) 或單引號 (') 之中。對數值來說,十進位和科學標記都可以使用。例如:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/82#"
對於含有列舉值的資料行,請將值轉型為整數資料型別。例如:
"EnumColumn = 5"
OPERATORS
串連允許使用布林值 AND、OR 和 NOT 運算子。你可以使用括號來設定子句的群組,並強制優先順序。AND 運算子優先於其他的運算子。例如:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
在建立比較運算式時,允許下列的運算子:
<
>
<=
>=
<>
=
IN
LIKE
在運算式中也支援下列的算術運算子:
+ (加法)
- (減法)
* (乘法)
/ (除法)
% (模數)
STRING OPERATORS
若要串連字串,請使用 + 字元。DataSet 類别的 CaseSensitive 屬性值會決定字串比較是否區分大小寫。但是你可以使用 DataTable 類別的 CaseSensitive 屬性來覆寫該值。
萬用字元
* 和 % 都可以在 LIKE 比較中做為萬用字元來交替使用。如果在 LIKE 子句的字串含有 * 或 %,則這些字元應該在括號 ([]) 中逸出。如果括號在子句中,則括號字元應該在括號 (例如 [[] 或 []]) 中逸出。萬用字元允許用在模式的開端和末端、或用在模式的末端,或用在模式的開端。例如:
"ItemName LIKE '*product*'"
"ItemName LIKE '*product'"
"ItemName LIKE 'product*'"
萬用字元不允許用在字串的中間。例如,不允許 'te*xt'。
父代 / 子代關係參考
在運算式中可藉由在資料行名稱前面加上 Parent,來參考父資料表。例如,Parent.Price 會參考父資料表中名為 Price 的資料行。
在運算式中可藉由在資料行名稱前面加上 Child,來參考子資料表中的資料行。但是,因為子關聯性 (Relationship) 可能會傳回多個資料列,所以您必須將子資料行的參考包含在彙總函式中。例如,Sum(Child.Price) 會傳回子資料表中名稱為 Price 之資料行的總和。
如果資料表具有一個以上的子資料表,則語法為:Child(RelationName)。例如,如果資料表具有兩個名稱為 Customers 和 Orders 的子資料表,而且 DataRelation 物件命名為 Customers2Orders,則參考就會如下所示:
Avg(Child(Customers2Orders).Quantity)
AGGREGATES
下列為支援的彙總型別:
Sum (總和)
Avg (平均值)
Min (最小值)
Max (最大值)
Count (計數)
StDev (統計標準差)
Var (統計變異數)
彙總通常依照關聯性 (Relationship) 來執行。藉由使用上面所列的其中一個函式和在上述 PARENT/CHILD RELATION REFERENCING 中詳細說明的子資料表資料行,建立彙總運算式。例如:
Avg(Child.Price)
Avg(Child(Orders2Details).Price)
彙總也可以在單一資料表上執行。例如,若要在命名為 "Price" 的資料行中建立圖形摘要:
Sum(Price)
注意事項: |
|---|
如果你使用單一資料表來建立彙總,則將不會有根據群組建立的函式。所有的資料列反而將在資料行中顯示相同的值。 |
如果資料表不具有資料列,則彙總函式將傳回 nullNothingnullptrNull 參照 (即 Visual Basic 中的 Nothing)。
資料型別永遠可以由檢查資料行的 DataType 屬性來判斷。你也可以使用轉換型別函式來轉換資料型別,如下面段落中所示。
FUNCTIONS
也支援下列的函式:
CONVERT
說明 | 將特定的運算式轉換為指定的 .NET Framework 型別。 |
語法 | Convert(expression, type) |
引數 | expression -- 要轉換的運算式。 type -- 值將轉換成的 .NET Framework 型別。 |
範例:myDataColumn.Expression="Convert(total, 'System.Int32')"
具有下列例外狀況的所有轉換都有效:Boolean 只可以強制 Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、String 和它本身之間的轉換。Char 只可以強制 Int32、UInt32、String 和它本身之間的轉換。DateTime 只可以強制於 String 和它本身。TimeSpan 只可以強制 String 和它本身之間的轉換。
LEN
說明 | 取得字串的長度。 |
語法 | LEN(expression) |
引數 | expression -- 要評估的字串。 |
範例:myDataColumn.Expression="Len(ItemName)"
ISNULL
說明 | 檢查運算式,並且傳回檢查的運算式,或傳回取代的值。 |
語法 | ISNULL(expression, replacementvalue) |
引數 | expression -- 要檢查的運算式。 replacementvalue -- 如果運算式是 nullNothingnullptrNull 參照 (即 Visual Basic 中的 Nothing),則傳回 replacementvalue。 |
範例:myDataColumn.Expression="IsNull(price, -1)"
IIF
說明 | 根據邏輯運算式的結果,取得兩個值的其中一個。 |
語法 | IIF(expr, truepart, falsepart) |
引數 | expr -- 要評估的運算式。 truepart -- 如果運算式為 True 時要傳回的值。 falsepart -- 如果運算式為 False 時要傳回的值。 |
範例:myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
說明 | 移除所有前置和後置的空白字元,例如 \r、\n、\t、' '。 |
語法 | TRIM(expression) |
引數 | expression -- 要修剪的運算式。 |
SUBSTRING
說明 | 取得指定長度的子字串,開始於字串中的指定點。 |
語法 | SUBSTRING(expression, start, length) |
引數 | expression -- 子字串的來源字串。 start -- 指定子字串開始處的整數。 length -- 指定子字串長度的整數。 |
範例:myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
注意事項: |
|---|
你可以藉由為它指派 Null 值或空字串來重設 Expression 屬性。如果預設值是設定在運算式資料行上,則在重設 Expression 屬性之後,預設值會指派給所有先前所填入的資料列。 |