Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
Een van de Expression eigenschappen is het maken van berekende kolommen. Als u bijvoorbeeld een belastingwaarde wilt berekenen, wordt de eenheidsprijs vermenigvuldigd met een belastingtarief van een specifieke regio. Omdat belastingtarieven per regio verschillen, zou het onmogelijk zijn om één belastingtarief in een kolom te plaatsen; In plaats daarvan wordt de waarde berekend met behulp van de Expression eigenschap, zoals wordt weergegeven in de volgende code:
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
Een tweede gebruik is het maken van een statistische kolom. Net als bij een berekende waarde voert een aggregatie een bewerking uit op basis van de volledige set rijen in de DataTable. Een eenvoudig voorbeeld is het tellen van het aantal rijen dat in de set wordt geretourneerd. Dit is de methode die u zou gebruiken om het aantal transacties te tellen dat is voltooid door een bepaalde verkoper, zoals wordt weergegeven in de volgende code:
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
Expressiesyntaxis
Wanneer u een expressie maakt, gebruikt u de ColumnName eigenschap om te verwijzen naar kolommen. Als de ColumnName voor één kolom bijvoorbeeld 'Prijs per eenheid' en een andere 'Hoeveelheid' is, is de expressie:
"UnitPrice * Quantity"
Opmerking
Als een kolom wordt gebruikt in een expressie, wordt gezegd dat de expressie een afhankelijkheid van die kolom heeft. Als de naam van een afhankelijke kolom wordt gewijzigd of verwijderd, wordt er geen uitzondering gegenereerd. Er wordt een uitzondering opgeworpen wanneer de nu verbroken expressie-kolom wordt geopend.
Wanneer u een expressie voor een filter maakt, plaatst u tekenreeksen tussen enkele aanhalingstekens:
"LastName = 'Jones'"
Als een kolomnaam niet-alfanumerieke tekens bevat, begint met een cijfer of overeenkomt (hoofdlettergevoelig) een van de volgende gereserveerde woorden, is speciale verwerking vereist, zoals beschreven in de volgende alinea's.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
Als een kolomnaam voldoet aan een van de vorige voorwaarden, moet deze tussen vierkante haken of ''' (accenttekens) worden geplaatst. Als u bijvoorbeeld een kolom met de naam 'Column#' in een expressie wilt gebruiken, schrijft u '[Column#]' of 'Column#':
Total * [Column#]
Als de kolomnaam tussen vierkante haken staat, moeten alle tekens ']' en '\' in de kolom (maar niet andere tekens) worden overgeslagen door deze vooraf te laten gaan door het teken backslash ("\") toe te passen. Als de kolomnaam tussen grave accenttekens staat, mag deze geen grave accenttekens bevatten. Een kolom met de naam 'Column[]\' wordt bijvoorbeeld geschreven:
Total * [Column[\]\\]
of
Totaal * `Kolom[]\`
Door de gebruiker gedefinieerde waarden
Door de gebruiker gedefinieerde waarden kunnen worden gebruikt in expressies die moeten worden vergeleken met kolomwaarden. Tekenreekswaarden moeten tussen enkele aanhalingstekens worden geplaatst (en elk enkel aanhalingsteken in een tekenreekswaarde moet worden voorafgegaan door nog een aanhalingsteken). Datumwaarden moeten tussen hekjes (#) of enkele aanhalingstekens (') worden geplaatst, afhankelijk van de gegevensprovider. Decimalen en wetenschappelijke notatie zijn toegestaan voor numerieke waarden. Voorbeeld:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/2006#"
Voor kolommen die opsommingswaarden bevatten, zet u de waarde om naar een integer-gegevensformaat. Voorbeeld:
"EnumColumn = 5"
Letterlijke expressies parseren
Alle letterlijke expressies moeten worden uitgedrukt in de landinstelling van de invariante cultuur. Wanneer DataSet letterlijke expressies parseert en converteert, gebruikt het altijd de invariante cultuur, niet de huidige cultuur.
Letterlijke tekenreeksen worden geïdentificeerd wanneer er enkele aanhalingstekens rond de waarde staan. Bijvoorbeeld: 'John'.
Boolean letterlijke waarden zijn true en false; ze worden niet geciteerd in expressies.
Integer letterlijke gegevens [+-]? [0-9]+ worden behandeld als System.Int32, System.Int64of System.Double.
System.Double kan precisie verliezen, afhankelijk van hoe groot het getal is. Als het getal in de letterlijke waarde bijvoorbeeld 2147483650 is, DataSet probeert u eerst het getal te parseren als een Int32. Dit lukt niet omdat het getal te groot is. In dit geval DataSetparseert u het getal als een Int64, wat slaagt. Als de letterlijke waarde een getal is dat groter is dan de maximumwaarde van een Int64, DataSet parseert u de letterlijke waarde met behulp van Double.
Echte letterlijke gegevens die gebruikmaken van wetenschappelijke notatie, zoals 4,42372E-30, worden geparseerd met behulp van System.Double.
Echte letterlijke gegevens zonder wetenschappelijke notatie, maar met een decimaalteken, worden behandeld als System.Decimal. Als het getal de maximum- of minimumwaarden overschrijdt die worden ondersteund door System.Decimal, wordt het geparseerd als een System.Double. Voorbeeld:
- 142526.144524 wordt geconverteerd naar een
Decimal. - 345262.78036719560925667 wordt beschouwd als een
Double.
Bedieners
Samenvoeging is toegestaan met booleaanse en, OR- en NOT-operators. U kunt haakjes gebruiken om componenten te groeperen en prioriteit af te dwingen. De AND-operator heeft voorrang op andere operators. Voorbeeld:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Wanneer u vergelijkingsexpressies maakt, zijn de volgende operators toegestaan:
- <
- >
- <=
- >=
- =
INLIKE
De volgende rekenkundige operatoren worden ook ondersteund in expressies:
- + (optellen)
- - (aftrekken)
- * (vermenigvuldiging)
- / (divisie)
- % (modulus)
Stringoperatoren
Als u een tekenreeks wilt samenvoegen, gebruikt u het + teken. De waarde van de CaseSensitive eigenschap van de DataSet klasse bepaalt of tekenreeksvergelijkingen hoofdlettergevoelig zijn. U kunt deze waarde echter overschrijven met de CaseSensitive eigenschap van de DataTable klasse.
Jokertekens
Zowel de *- als de %-tekens kunnen door elkaar worden gebruikt voor jokerkarakters in een LIKE-vergelijking. Als de tekenreeks in een LIKE-component een * of %bevat, moeten deze tekens tussen vierkante haken ([]) worden geplaatst. Als een haakje in de zin staat, moet elk haakje tussen vierkante haken (bijvoorbeeld [[] of []]) worden geplaatst. Een jokerteken is toegestaan aan het begin en einde van een patroon, aan het einde van een patroon of aan het begin van een patroon. Voorbeeld:
"ItemName LIKE '*product*'""ItemName LIKE '*product'""ItemName LIKE 'product*'"
Jokertekens zijn niet toegestaan in het midden van een tekenreeks.
'te*xt' is bijvoorbeeld niet toegestaan.
Ouder/kind relatieverwijzing
In een expressie kan naar een bovenliggende tabel worden verwezen door de kolomnaam met Parent te laten beginnen. Verwijst bijvoorbeeld Parent.Price naar de kolom van de bovenliggende tabel met de naam Price.
Wanneer een kind meer dan één bovenliggende rij heeft, gebruik Parent(RelationName).ColumnName. Verwijst bijvoorbeeld Parent(RelationName).Price naar de kolom van de bovenliggende tabel met de naam 'Prijs' via de relatie.
In een expressie kan naar een kolom in een kindtabel worden verwezen door de kolomnaam te laten voorafgaan door Child. Omdat kindrelaties echter meerdere rijen kunnen retourneren, moet u de verwijzing naar de kindkolom opnemen in een aggregatiefunctie. Retourneert bijvoorbeeld Sum(Child.Price) de som van de kolom met de naam Price in de onderliggende tabel.
Als een tabel meer dan één onderliggend element heeft, is de syntaxis: Child(RelationName). Als een tabel bijvoorbeeld twee onderliggende tabellen heeft met de namen Customers en Orders en het object DataRelation de naam Customers2Orders heeft, ziet de verwijzing er als volgt uit:
Avg(Child(Customers2Orders).Quantity)
Aggregaten
De volgende aggregatietypen worden ondersteund:
-
Sum(Som) -
Avg(Gemiddeld) -
Min(Minimaal) -
Max(Maximum) -
Count(Aantal) -
StDev(Statistische standaarddeviatie) -
Var(Statistische variantie)
Aggregaties worden gewoonlijk langs relaties uitgevoerd. Maak een samengestelde expressie met behulp van een van de functies die eerder vermeld zijn en een kolom van een kindtabel, zoals beschreven in verwijzen naar bovenliggende/onderliggende relaties. Voorbeeld:
Avg(Child.Price)Avg(Child(Orders2Details).Price)
Een aggregatie kan ook worden uitgevoerd op één tabel. Bijvoorbeeld om een samenvatting van gegevens te maken in een kolom 'Prijs':
Sum(Price)
Opmerking
Als u één tabel gebruikt om een aggregaat te maken, is er geen groeperingsfunctionaliteit. In plaats daarvan zouden alle rijen dezelfde waarde in de kolom weergeven.
Als een tabel geen rijen heeft, zullen de aggregatiefuncties null retourneren.
Gegevenstypen kunnen altijd worden bepaald door de DataType eigenschap van een kolom te onderzoeken. U kunt ook gegevenstypen converteren met behulp van de Convert functie, weergegeven in de volgende sectie.
Een aggregatie kan alleen worden toegepast op één kolom en er kunnen geen andere expressies in de aggregatie worden gebruikt.
Functies
De volgende functies worden ook ondersteund.
CONVERT
Met deze functie wordt een expressie geconverteerd naar een opgegeven .NET-type.
Convert(expression, type)
| Argumentatie | Beschrijving |
|---|---|
expression |
De expressie die moet worden omgezet. |
type |
.NET-type waarnaar de waarde wordt geconverteerd. |
Voorbeeld: myDataColumn.Expression="Convert(total, 'System.Int32')"
Alle conversies zijn geldig met de volgende uitzonderingen: Boolean kan alleen worden omgezet naar en van Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String en zichzelf.
Char kan alleen worden omgezet naar en van Int32, UInt32, String, en zichzelf.
DateTime kan alleen omgezet worden naar en van String en zichzelf.
TimeSpan kan alleen omgezet worden naar en van String en zichzelf.
LEN
Deze functie haalt de lengte van een tekenreeks op.
LEN(expression)
| Argumenten | Beschrijving |
|---|---|
expression |
De tekenreeks die moet worden geëvalueerd. |
Voorbeeld: myDataColumn.Expression="Len(ItemName)"
ISNULL
Met deze functie wordt een expressie gecontroleerd en wordt de gecontroleerde expressie of een vervangende waarde geretourneerd.
ISNULL(expression, replacementvalue)
| Argumenten | Beschrijving |
|---|---|
expression |
De expressie die moet worden gecontroleerd. |
replacementvalue |
Als de uitdrukking null is, wordt replacementvalue geretourneerd. |
Voorbeeld: myDataColumn.Expression="IsNull(price, -1)"
IIF
Deze functie haalt een van de twee waarden op, afhankelijk van het resultaat van een logische expressie.
IIF(expr, truepart, falsepart)
| Argumenten | Beschrijving |
|---|---|
expr |
De expressie die moet worden geëvalueerd. |
truepart |
De waarde die moet worden geretourneerd als de expressie waar is. |
falsepart |
De waarde die moet worden geretourneerd als de expressie onwaar is. |
Voorbeeld: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
Met deze functie worden alle voorloop- en volg-blanco tekens, zoals \r, \n, \t en ' ', verwijderd.
TRIM(expression)
| Argumentatie | Beschrijving |
|---|---|
expression |
De expressie om af te kappen. |
SUBSTRING
Deze functie haalt een subtekenreeks van een opgegeven lengte op, beginnend bij een opgegeven punt in de tekenreeks.
SUBSTRING(expression, start, length)
| Argumentatie | Beschrijving |
|---|---|
expression |
De brontekenreeks voor de subtekenreeks |
start |
Geheel getal dat aangeeft waar de subtekenreeks begint. |
length |
Geheel getal dat de lengte van de subtekenreeks aangeeft. |
Voorbeeld: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Opmerking
U kunt de Expression eigenschap opnieuw instellen door deze toe te wijzen aan een null-waarde of een lege tekenreeks. Als een standaardwaarde is ingesteld voor de expressiekolom, krijgen alle eerder ingevulde rijen de standaardwaarde toegewezen nadat de Expression eigenschap opnieuw is ingesteld.