Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Jedním z použití Expression vlastnosti je vytvoření počítaných sloupců. Například k výpočtu daňové hodnoty se jednotková cena vynásobí sazbou daně konkrétní oblasti. Vzhledem k tomu, že daňové sazby se liší od oblasti po oblast, není možné do sloupce vložit jedinou sazbu daně; místo toho se hodnota vypočítá pomocí Expression vlastnosti, jak je znázorněno v následujícím kódu:
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
Druhým použitím je vytvoření agregovaného sloupce. Podobně jako počítaná hodnota provádí agregace operaci na základě kompletní sady řádků v objektu DataTable. Jednoduchým příkladem je spočítat počet řádků vrácených v sadě. Jedná se o metodu, pomocí které byste spočítali počet transakcí dokončených konkrétním prodejcem, jak je znázorněno v následujícím kódu:
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
Syntaxe výrazů
Při vytváření výrazu ColumnName použijte vlastnost odkazující na sloupce. Pokud ColumnName je například pro jeden sloupec "UnitPrice" a další "Quantity", výraz je:
"UnitPrice * Quantity"
Poznámka:
Pokud se sloupec používá ve výrazu, znamená to, že výraz má závislost na daném sloupci. Pokud je závislý sloupec přejmenován nebo odebrán, není vyvolána žádná výjimka. Při přístupu ke sloupci výrazu, který je nyní přerušený, dojde k výjimce.
Když vytvoříte výraz pro filtr, uzavřete řetězce do jednoduchých uvozovek:
"LastName = 'Jones'"
Pokud název sloupce obsahuje jakékoli jiné než alfanumerické znaky, začíná číslicí nebo odpovídá (nerozlišuje velká a malá písmena) některá z následujících rezervovaných slov, vyžaduje zvláštní zpracování, jak je popsáno v následujících odstavcích.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
Pokud název sloupce splňuje jednu z předchozích podmínek, musí být zabalený do hranatých závorek nebo do uvozovek ` (apostrof). Pokud například chcete ve výrazu použít sloupec s názvem Sloupec#, napíšete buď "[Column#]", nebo "'Column#'":
Total * [Column#]
Pokud je název sloupce uzavřen v hranatých závorkách, musí být jakékoli znaky ']' a '\' nahrazeny zpětným lomítkem před nimi ("\"). Pokud je název sloupce uzavřený do znaků zpětného apostrofu, nesmí obsahovat žádné zpětné apostrofy. Například sloupec s názvem "Column[]\" by se napsal:
Total * [Column[\]\\]
nebo
Total * 'Column[]\'
Uživatelem definované hodnoty
Uživatelem definované hodnoty lze použít ve výrazech, které se mají porovnat s hodnotami sloupců. Řetězcové hodnoty by měly být uzavřeny do jednoduchých apostrofů (a každý znak apostrofů v řetězcové hodnotě musí být upraven přidáním dalšího znaku apostrofů před něj). Hodnoty kalendářních dat by měly být uzavřeny do mřížek (#) nebo jednoduchých uvozovek (') v závislosti na poskytovateli dat. Desetinná místa a vědecký zápis jsou pro číselné hodnoty přípustné. Například:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/2006#"
U sloupců obsahujících hodnoty výčtu přetypujte hodnotu na datový typ celé číslo. Například:
"EnumColumn = 5"
Parsování literálových výrazů
Všechny literální výrazy musí být vyjádřeny v invariantní jazykové národní prostředí. Při analýze a převodu literálových výrazů s využitím DataSet se vždy používá invariantní kultura, nikoli aktuální kultura.
Řetězcové literály jsou identifikovány, pokud jsou kolem hodnoty jednoduché uvozovky. Například: 'John'.
Boolean literály jsou true a false; nejsou ve výrazech uvozovány.
Integer literály [+-]? [0-9]+ jsou považovány za System.Int32, System.Int64nebo System.Double.
System.Double může ztratit přesnost v závislosti na velikosti čísla. Pokud je například číslo v literálu 2147483650, DataSet pokusí se číslo nejprve analyzovat jako .Int32 Nebude to úspěšné, protože číslo je příliš velké. V tomto případě DataSetparsuje číslo jako hodnotu Int64, která bude úspěšná. Pokud je literál číslo větší než maximální hodnota int64, DataSet parsuje literál pomocí Double.
Reálné literály, které používají vědecký zápis, například 4,42372E-30, jsou analyzovány pomocí System.Double.
Číselné literály bez vědeckého zápisu, ale s desetinnou čárkou, jsou považovány za System.Decimal. Pokud číslo překročí maximální nebo minimální hodnoty, které System.Decimalpodporuje , pak se analyzuje jako System.Double. Například:
- 142526.144524 je převeden na
Decimal. - 345262.78036719560925667 je považován za
Double.
Operátoři
Zřetězení je povoleno pomocí logických operátorů AND, OR nebo NOT. K seskupení klauzulí a vynucení priority můžete použít závorky. Operátor AND má přednost před jinými operátory. Například:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Při vytváření porovnávacích výrazů jsou povoleny následující operátory:
- <
- >
- <=
- >=
- =
INLIKE
Výrazy podporují také následující aritmetické operátory:
- + (sčítání)
- - (odčítání)
- * (násobení)
- / (dělení)
- % (modul)
Řetězcové operátory
Ke zřetězení řetězce použijte + znak. Hodnota CaseSensitive vlastnosti DataSet třídy určuje, zda porovnání řetězců rozlišují malá a velká písmena. Tuto hodnotu CaseSensitive však můžete přepsat vlastností DataTable třídy.
Zástupné znaky
Znaky * a % lze v porovnání typu LIKE používat zaměnitelně pro zástupné znaky. Pokud řetězec v klauzuli LIKE obsahuje * nebo %, měly by být tyto znaky uzavřeny v hranatých závorkách ([]). Pokud je v klauzuli závorka, musí být každý znak závorky uzavřený v hranatých závorkách (například [[][]]). Zástupný znak je povolený na začátku a na konci vzoru nebo na konci vzoru nebo na začátku vzoru. Například:
"ItemName LIKE '*product*'""ItemName LIKE '*product'""ItemName LIKE 'product*'"
Zástupné znaky nejsou povoleny uprostřed řetězce. Například 'te*xt' není povolen.
Odkazování na vztah nadřazenosti a podřízenosti
Na nadřazenou tabulku lze ve výrazu odkazovat tak, že před názvem sloupce použijete Parent. Například Parent.Price odkazuje na sloupec nadřazené tabulky s názvem Price.
Pokud má dítě více než jednoho nadřazeného, použijte Parent(RelationName).ColumnName. Například Parent(RelationName).Price odkazuje na sloupec nadřazené tabulky s názvem Price (Cena) prostřednictvím relace.
Na sloupec v podřízené tabulce lze ve výrazu odkazovat tak, že před název sloupce použijete Child. Vzhledem k tomu, že podřízené relace můžou vracet více řádků, musíte do agregační funkce zahrnout odkaz na podřízený sloupec. Například Sum(Child.Price) vrátí součet sloupce pojmenovaného Price v podřízené tabulce.
Pokud má tabulka více než jeden podřízený prvek, syntaxe je: Child(RelationName). Pokud má například tabulka dvě podřízené tabulky s názvem Customers a Ordersobjekt DataRelation je pojmenovaný Customers2Orders, odkaz by byl následující:
Avg(Child(Customers2Orders).Quantity)
Agregáty
Podporují se následující agregační typy:
-
Sum(Součet) -
Avg(Průměr) -
Min(Minimum) -
Max(Maximální) -
Count(Počet) -
StDev(Statistická směrodatná odchylka) -
Var(Statistická odchylka)
Agregace se obvykle provádějí na základě vztahů. Vytvořte agregační výraz pomocí některé z funkcí uvedených dříve a podřízeného sloupce tabulky, jak je podrobně popsáno v odkazu na vztah nadřazenosti/podřízenosti. Například:
Avg(Child.Price)Avg(Child(Orders2Details).Price)
Agregaci je možné provést také v jedné tabulce. Pokud například chcete vytvořit souhrn obrázků ve sloupci s názvem "Cena":
Sum(Price)
Poznámka:
Pokud k vytvoření agregace použijete jednu tabulku, nebude k dispozici funkce pro seskupování. Místo toho by všechny řádky zobrazovaly stejnou hodnotu ve sloupci.
Pokud tabulka neobsahuje žádné řádky, agregační funkce vrátí null.
Datové typy lze vždy určit prozkoumáním DataType vlastnosti sloupce. Datové typy můžete také převést pomocí Convert funkce, jak je znázorněno v následující části.
Agregaci lze použít pouze na jeden sloupec a uvnitř agregace se nedají použít žádné jiné výrazy.
Functions
Podporují se také následující funkce.
CONVERT
Tato funkce převede výraz na zadaný typ .NET.
Convert(expression, type)
| Důvod | Popis |
|---|---|
expression |
Výraz, který se má převést. |
type |
Typ .NET, na který se hodnota převede. |
Příklad: myDataColumn.Expression="Convert(total, 'System.Int32')"
Všechny převody jsou platné s následujícími výjimkami: Boolean lze převést z a do Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String a na sebe samého.
Char lze převést do a z Int32, UInt32, String, a sám pouze.
DateTime může být převeden na a z String a pouze na sebe.
TimeSpan může být převeden na a z String a pouze na sebe.
LEN
Tato funkce získá délku řetězce.
LEN(expression)
| Argumenty | Popis |
|---|---|
expression |
Řetězec, který se má vyhodnotit. |
Příklad: myDataColumn.Expression="Len(ItemName)"
ISNULL
Tato funkce zkontroluje výraz a vrátí kontrolované výrazy nebo náhradní hodnotu.
ISNULL(expression, replacementvalue)
| Argumenty | Popis |
|---|---|
expression |
Výraz, který chcete zkontrolovat. |
replacementvalue |
Pokud je výraz null, vrátí se replacementvalue. |
Příklad: myDataColumn.Expression="IsNull(price, -1)"
IIF
Tato funkce získá jednu ze dvou hodnot v závislosti na výsledku logického výrazu.
IIF(expr, truepart, falsepart)
| Argumenty | Popis |
|---|---|
expr |
Výraz, který se má vyhodnotit. |
truepart |
Hodnota, která se má vrátit, pokud je výraz pravdivý. |
falsepart |
Hodnota, která se má vrátit, pokud je výraz nepravdivý. |
Příklad: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
Tato funkce odebere všechny počáteční a koncové prázdné znaky, jako jsou \r, \n, \t a '.
TRIM(expression)
| Důvod | Popis |
|---|---|
expression |
Výraz, který se má oříznout. |
SUBSTRING
Tato funkce získá podřetězce zadané délky počínaje zadaným bodem v řetězci.
SUBSTRING(expression, start, length)
| Důvod | Popis |
|---|---|
expression |
Zdrojový řetězec podřetězce |
start |
Celé číslo, které určuje, kde se podřetězec začíná. |
length |
Celé číslo, které určuje délku podřetězce. |
Příklad: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Poznámka:
Vlastnost Expression můžete resetovat přiřazením hodnoty null nebo prázdného řetězce. Pokud je ve sloupci výrazu nastavena výchozí hodnota, všechny dříve vyplněné řádky jsou po resetování vlastnosti přiřazeny výchozí hodnotu Expression .