Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.
Jednym z zastosowań Expression właściwości jest utworzenie kolumn obliczeniowych. Na przykład aby obliczyć wartość podatkową, cena jednostkowa jest mnożona przez stawkę podatkową określonego regionu. Ponieważ stawki podatkowe różnią się w zależności od regionu do regionu, nie można umieścić jednej stawki podatkowej w kolumnie; Zamiast tego wartość jest obliczana przy użyciu Expression właściwości , jak pokazano w poniższym kodzie:
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
Drugie użycie polega na utworzeniu kolumny agregującej. Podobnie jak w przypadku wartości obliczeniowej, agregacja wykonuje operację na podstawie kompletnego zestawu wierszy w obiekcie DataTable. Prostym przykładem jest zliczenie liczby wierszy zwróconych w zestawie. Jest to metoda, która służy do zliczenia liczby transakcji zakończonych przez określonego sprzedawcy, jak pokazano w poniższym kodzie:
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
Składnia wyrażeń
Podczas tworzenia wyrażenia użyj ColumnName właściwości , aby odwołać się do kolumn. Na przykład, jeśli ColumnName dla jednej kolumny to "UnitPrice", a dla drugiej "Quantity", wyrażenie to:
"UnitPrice * Quantity"
Uwaga / Notatka
Jeśli kolumna jest używana w wyrażeniu, wyrażenie ma zależność od tej kolumny. Jeśli nazwa kolumny zależnej zostanie zmieniona lub usunięta, nie zostanie zgłoszony wyjątek. Gdy jest uzyskiwany dostęp do obecnie uszkodzonej kolumny wyrażenia, zostanie zgłoszony wyjątek.
Podczas tworzenia wyrażenia dla filtru należy ująć ciągi z pojedynczymi cudzysłowami:
"LastName = 'Jones'"
Jeśli nazwa kolumny zawiera jakiekolwiek znaki inne niż alfanumeryczne, rozpoczyna się od cyfry lub pasuje (bez uwzględniania wielkości liter) dowolny z następujących zastrzeżonych słów, wymaga specjalnej obsługi, zgodnie z opisem w poniższych akapitach.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
Jeśli nazwa kolumny spełnia jeden z poprzednich warunków, musi być opakowana w nawiasy kwadratowe lub cudzysłowy """ (akcent grobowy). Aby na przykład użyć kolumny o nazwie "Column#" w wyrażeniu, należy napisać ciąg "[Column#]" lub "'Column#'":
Total * [Column#]
Jeśli nazwa kolumny jest ujęta w nawiasy kwadratowe, wszelkie znaki "]" i "\" (ale nie żadne inne znaki) w niej muszą być poprzedzone ukośnikiem odwrotnym ("\"). Jeśli nazwa kolumny jest ujęta w znaki cudzysłowu odwrotnego, nie może zawierać żadnych znaków cudzysłowu odwrotnego. Na przykład zostanie zapisana kolumna o nazwie "Column[]\":
Total * [Column[\]\\]
lub
Suma * "Kolumna[]\"
Wartości zdefiniowane przez użytkownika
Wartości zdefiniowane przez użytkownika mogą być używane w wyrażeniach do porównywania z wartościami kolumn. Wartości ciągów powinny być ujęte w pojedynczy cudzysłów (a każdy pojedynczy znak cudzysłowu w wartości ciągu musi zostać uniknięty przez poprzedzanie go innym znakiem pojedynczego cudzysłowu). Wartości daty powinny być ujęte w znaki funta (#) lub pojedyncze cudzysłowy (') na podstawie dostawcy danych. Wartości dziesiętne i notacja naukowa są dopuszczalne dla wartości liczbowych. Przykład:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/2006#"
W przypadku kolumn, które zawierają wartości wyliczenia, rzutuj wartość na typ danych liczb całkowitych. Przykład:
"EnumColumn = 5"
Analizuj wyrażenia literalne
Wszystkie wyrażenia dosłowne muszą być wyrażone w niezmiennych ustawieniach kultury. Podczas DataSet analizowania i konwertowania wyrażeń literału zawsze używa niezmiennej kultury, a nie bieżącej kultury.
Literały ciągu są identyfikowane, gdy istnieją pojedyncze cudzysłowy otaczające daną wartość. Na przykład 'John'.
Boolean literały to true i false; nie są cytowane w wyrażeniach.
Integer literały [+-]? [0–9]+ są traktowane jako System.Int32, System.Int64lub System.Double.
System.Double może utracić precyzję w zależności od wielkości liczby. Jeśli na przykład liczba w literał jest 2147483650, DataSet spróbuje najpierw przeanalizować liczbę jako Int32. Nie powiedzie się, ponieważ liczba jest zbyt duża. W tym przypadku DataSet, funkcja analizuje liczbę jako Int64, wartość, co zakończy się pomyślnie. Jeśli literał jest liczbą większą niż maksymalna wartość int64, DataSet analizuje literał przy użyciu metody Double.
Literały rzeczywiste używające notacji naukowej, takie jak 4.42372E-30, są analizowane przy użyciu metody System.Double.
Rzeczywiste literały bez notacji naukowej, ale z przecinkiem dziesiętnym są traktowane jako System.Decimal. Jeśli liczba przekracza maksymalną lub minimalną wartość obsługiwaną przez System.Decimal, zostanie ona przeanalizowana jako System.Double. Przykład:
- 142526.144524 jest konwertowany na
Decimal. - 345262.78036719560925667 jest traktowane jako
Double.
Operatorów
Łączenie jest dozwolone przy użyciu operatorów logicznych AND, OR i NOT. Nawiasy umożliwiają grupowanie klauzul i wymuszanie pierwszeństwa. Operator AND ma pierwszeństwo przed innymi operatorami. Przykład:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Podczas tworzenia wyrażeń porównania dozwolone są następujące operatory:
- <
- >
- <=
- >=
- =
INLIKE
Następujące operatory arytmetyczne są również obsługiwane w wyrażeniach:
- + (dodawanie)
- - (odejmowanie)
- * (mnożenie)
- / (podział)
- % (moduł)
Operatory łańcuchów znaków
Aby połączyć ciąg, użyj + znaku . Wartość CaseSensitive właściwości DataSet klasy określa, czy porównania ciągów znaków są wrażliwe na wielkość liter. Można jednak zastąpić tę wartość właściwością CaseSensitiveDataTable klasy.
Symboli wieloznacznych
* i % mogą być używane zamiennie jako znaki wieloznaczne w wyrażeniu LIKE. Jeśli ciąg w klauzuli LIKE zawiera znak * lub %, te znaki powinny być ujęte w nawiasy kwadratowe ([]). Jeśli nawias znajduje się w fragmencie tekstu, każdy znak nawiasu powinien być ujęty w dodatkowe nawiasy (na przykład [[] lub []]). Symbol wieloznaczny jest dozwolony na początku i na końcu wzorca lub na końcu wzorca lub na początku wzorca. Przykład:
"ItemName LIKE '*product*'""ItemName LIKE '*product'""ItemName LIKE 'product*'"
Symbole wieloznaczne nie są dozwolone w środku ciągu. Na przykład 'te*xt' jest niedozwolona.
Odwoływanie się do relacji nadrzędnej/podrzędnej
W wyrażeniu można odwoływać się do tabeli nadrzędnej, poprzedzając nazwę kolumny ciągiem Parent. Na przykład Parent.Price odwołuje się do kolumny tabeli nadrzędnej o nazwie Price.
Jeśli dziecko ma więcej niż jeden wiersz nadrzędny, użyj Parent(RelationName).ColumnName. Na przykład Parent(RelationName).Price odwołuje się do kolumny tabeli nadrzędnej o nazwie "Price" za pośrednictwem relacji.
Kolumna w tabeli podrzędnej może być przywoływana w wyrażeniu, dodając przed nazwą kolumny Child. Jednak ponieważ relacje podrzędne mogą zwracać wiele wierszy, należy dołączyć odwołanie do kolumny podrzędnej w funkcji agregującej. Na przykład Sum(Child.Price) zwraca sumę kolumny o nazwie Price w tabeli podrzędnej.
Jeśli tabela ma więcej niż jeden element podrzędny, składnia to: Child(RelationName). Jeśli na przykład tabela ma dwie tabele podrzędne o nazwie Customers i Orders, a obiekt DataRelation ma nazwę Customers2Orders, odwołanie będzie wyglądać następująco:
Avg(Child(Customers2Orders).Quantity)
Agregatów
Obsługiwane są następujące typy agregacji:
-
Sum(Suma) -
Avg(Średnia) -
Min(Minimum) -
Max(Maksimum) -
Count(Liczba) -
StDev(Odchylenie standardowe statystyczne) -
Var(Wariancja statystyczna)
Agregacje są zwykle wykonywane na podstawie relacji. Utwórz wyrażenie agregujące przy użyciu jednej z funkcji wymienionych wcześniej i kolumny tabeli podrzędnej zgodnie z opisem w odwołaniu do relacji nadrzędny/podrzędny. Przykład:
Avg(Child.Price)Avg(Child(Orders2Details).Price)
Agregację można również wykonać w jednej tabeli. Aby na przykład utworzyć podsumowanie liczb w kolumnie o nazwie "Price":
Sum(Price)
Uwaga / Notatka
Jeśli skorzysta się z pojedynczej tabeli do utworzenia agregacji, nie będzie możliwości grupowania danych. Zamiast tego wszystkie wiersze będą wyświetlać tę samą wartość w kolumnie.
Jeśli tabela nie zawiera wierszy, funkcje agregujące zwróci wartość null.
Typy danych zawsze można określić, sprawdzając DataType właściwość kolumny. Typy danych można również przekonwertować przy użyciu Convert funkcji pokazanej w poniższej sekcji.
Agregacja może być stosowana tylko do jednej kolumny, a żadne inne wyrażenia nie mogą być używane wewnątrz agregacji.
Funkcje
Obsługiwane są również następujące funkcje.
CONVERT
Ta funkcja konwertuje wyrażenie na określony typ platformy .NET.
Convert(expression, type)
| Argumentacja | Opis |
|---|---|
expression |
Wyrażenie, które należy zamienić. |
type |
Typ platformy .NET, do którego zostanie przekonwertowana wartość. |
Przykład: myDataColumn.Expression="Convert(total, 'System.Int32')"
Wszystkie konwersje są prawidłowe z następującymi wyjątkami: Boolean może być przekształcone do i z Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String i tylko samo.
Char mogą być przekształcone tylko do i z Int32, UInt32, String i samego siebie.
DateTime mogą być zmuszane tylko do String i do siebie.
TimeSpan mogą być zmuszane tylko do String i do siebie.
LEN
Ta funkcja pobiera długość ciągu.
LEN(expression)
| Argumenty (w programowaniu) | Opis |
|---|---|
expression |
Ciąg do obliczenia. |
Przykład: myDataColumn.Expression="Len(ItemName)"
ISNULL
Ta funkcja sprawdza wyrażenie i zwraca zaznaczone wyrażenie lub wartość zastępczą.
ISNULL(expression, replacementvalue)
| Argumenty (w programowaniu) | Opis |
|---|---|
expression |
Wyrażenie do sprawdzenia. |
replacementvalue |
Jeśli wyrażenie ma wartość null, replacementvalue jest zwracane. |
Przykład: myDataColumn.Expression="IsNull(price, -1)"
IIF
Ta funkcja pobiera jedną z dwóch wartości w zależności od wyniku wyrażenia logicznego.
IIF(expr, truepart, falsepart)
| Argumenty (w programowaniu) | Opis |
|---|---|
expr |
Wyrażenie do oceny. |
truepart |
Wartość, która ma być zwracana, jeśli wyrażenie ma wartość true. |
falsepart |
Wartość, która ma być zwracana, jeśli wyrażenie ma wartość false. |
Przykład: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
Ta funkcja usuwa wszystkie wiodące i końcowe puste znaki, takie jak \r, \n, \t i ' .
TRIM(expression)
| Argumentacja | Opis |
|---|---|
expression |
Wyrażenie do przycinania. |
SUBSTRING
Ta funkcja pobiera podciąg o określonej długości, zaczynając od określonego punktu w ciągu.
SUBSTRING(expression, start, length)
| Argumentacja | Opis |
|---|---|
expression |
Źródłowy ciąg dla podciągu |
start |
Liczba całkowita określająca, gdzie rozpoczyna się podciąg tekstu. |
length |
Całkowita wartość określająca długość podciągu znaków. |
Przykład: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Uwaga / Notatka
Aby zresetować właściwość Expression, można jej przypisać wartość null lub pusty ciąg. Jeśli wartość domyślna zostanie ustawiona w kolumnie wyrażenia, wszystkie wcześniej wypełnione wiersze zostaną przypisane do wartości domyślnej po zresetowaniu Expression właściwości.