Assembly : System.Data (dans system.data.dll)
SyntaxePublic Property Expression As String
Dim instance As DataColumn Dim value As String value = instance.Expression instance.Expression = value
public string Expression { get; set; }
public: property String^ Expression { String^ get (); void set (String^ value); }
/** @property */ public String get_Expression () /** @property */ public void set_Expression (String value)
public function get Expression () : String public function set Expression (value : String)
Valeur de la propriété
Expression permettant de calculer la valeur d'une colonne ou de créer une colonne agrégat. Le type de retour d'une expression est déterminé par le DataType de la colonne.
Exceptions| Type d'exception | Condition |
|---|---|
| La valeur true est affectée à la propriété AutoIncrement ou Unique. | |
| Si vous utilisez la fonction CONVERT, le résultat de l'évaluation de l'expression est une chaîne, mais la chaîne ne contient pas de représentation pouvant être convertie en paramètre de type. | |
| Lorsque vous utilisez la fonction CONVERT, le cast demandé est impossible. Consultez la fonction Conversion dans la section suivante pour obtenir des informations détaillées sur les casts possibles. | |
| Lorsque vous utilisez la fonction SUBSTRING, l'argument de départ est hors limites. - ou - Lorsque vous utilisez la fonction SUBSTRING, l'argument de longueur est hors limites. | |
| Lorsque vous utilisez la fonction LEN ou la fonction TRIM, le résultat de l'évaluation de l'expression n'est pas une chaîne. Cela comprend les expressions dont le résultat de l'évaluation est Char. |
NotesLa propriété Expression permet notamment de créer des colonnes calculées. Par exemple, pour calculer le montant d'une taxe, le prix unitaire est multiplié par le taux de la taxe d'une région spécifique. Comme les taux des taxes varient selon la région, il est impossible d'insérer un taux de taxe unique dans une colonne. En effet, la valeur est calculée à l'aide de la propriété Expression, comme illustré dans le code Visual Basic, dans la section suivante :
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
Une autre utilisation consiste à créer une colonne agrégat. Semblable à une valeur calculée, un agrégat effectue une opération en se basant sur l'intégralité du jeu de lignes de DataTable. Un exemple simple consiste à compter le nombre de lignes retournées dans le jeu. Ceci est la méthode que vous utiliseriez pour compter le nombre de transactions effectuées par un vendeur particulier, comme illustré dans le code Visual Basic suivant :
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"Syntaxe d'expression
Lorsque vous créez une expression, utilisez la propriété ColumnName pour faire référence à des colonnes. Par exemple, si ColumnName d'une colonne est "UnitPrice" et un autre "Quantity", l'expression est la suivante :
"UnitPrice * Quantity"
Remarque |
|---|
| Si une colonne est utilisée dans une expression, l'expression est dite avoir une dépendance sur cette colonne. Si une colonne dépendante est renommée ou supprimée, aucune exception n'est levée. Une exception sera levée lorsque la colonne d'expression désormais interrompue fait l'objet d'un accès. |
Lorsque vous créez une expression pour un filtre, mettez les chaînes entre guillemets simples :
"LastName = 'Jones'"
Les caractères suivants sont des caractères spéciaux et doivent correspondre à des caractères d'échappement, comme expliqué ici, pour être utilisés dans un nom de colonne :
\n (saut de ligne)
\t (tabulation)
\r (retour chariot)
~
(
)
#
\
/
=
>
<
+
-
*
%
&
|
^
'
"
[
]
Si un nom de colonne contient un des caractères précédents, ce nom doit être placé entre crochets. Par exemple, pour utiliser la colonne appelée "Column#" dans une expression, vous devez écrire "[Column#]" :
Total * [Column#]
Comme les crochets sont des caractères spéciaux, vous devez utiliser une barre oblique inverse ("\") pour activer une séquence d'échappement pour le crochet, s'il fait partie d'un nom de colonne. Par exemple, une colonne appelée "Column[]" doit être écrite de la manière suivante :
Total * [Column[\]]
(Seule le deuxième crochet doit faire l'objet d'une séquence d'échappement.)
VALEURS DÉFINIES PAR L'UTILISATEUR
Les valeurs définies par l'utilisateur peuvent être utilisées dans des expressions pour être comparées à des valeurs de colonne. Les valeurs de chaîne doivent être placées entre guillemets simples. Les valeurs de date doivent être entourées de signes dièse (#). Les décimales et la notation scientifique sont autorisées pour des valeurs numériques. Par exemple :
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/82#"
Pour les colonnes qui contiennent des valeurs d'énumération, effectuez un cast de la valeur en type de données integer. Par exemple :
"EnumColumn = 5"
OPÉRATEURS
La concaténation est autorisée à l'aide des opérateurs booléens AND, OR et NOT. Vous pouvez utiliser des parenthèses pour regrouper des clauses et forcer la priorité. L'opérateur AND a priorité sur les autres opérateurs. Par exemple :
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Lorsque vous créez des expressions de comparaison, les opérateurs suivants sont autorisés :
<
>
<=
>=
<>
=
IN
LIKE
Les opérateurs arithmétiques suivants sont également pris en charge dans les expressions :
+ (addition)
- (soustraction)
* (multiplication)
/ (division)
% (modulo)
OPÉRATEURS DE CHAÎNE
Pour concaténer une chaîne, utilisez le caractère +. La valeur de la propriété CaseSensitive de la classe DataSet détermine si les comparaisons de chaînes respectent la casse. Toutefois, vous pouvez substituer cette valeur par la propriété CaseSensitive de la classe DataTable.
CARACTÈRES GÉNÉRIQUES
Les caractères * et % peuvent être utilisés indifféremment comme caractères génériques dans une comparaison LIKE. Si la chaîne située dans une clause LIKE contient un caractère * ou %, ceux-ci doivent correspondre à des caractères d'échappement au moyen de crochets ([]). Si la clause contient des crochets, ils doivent correspondre à des caractères d'échappement au moyen de crochets (par exemple [[] ou []]). Un caractère générique est autorisé au début et/ou à la fin d'un modèle. Exemple :
"ItemName LIKE '*product*'"
"ItemName LIKE '*product'"
"ItemName LIKE 'product*'"
Les caractères génériques ne sont pas autorisés au milieu d'une chaîne. Par exemple, "te*xt" n'est pas autorisé.
RÉFÉRENCES AUX RELATIONS PARENTS/ENFANTS
Une table parente peut être référencée dans une expression en ajoutant Parent au début du nom de la colonne. Par exemple, Parent.Price fait référence à la colonne de la table parente appelée Price.
Une colonne d'une table enfant peut être référencée dans une expression en ajoutant Child au début du nom de la colonne. Toutefois, une relation enfant pouvant retourner plusieurs lignes, vous devez inclure la référence à la colonne enfant dans une fonction d'agrégation. Par exemple, Sum(Child.Price) retournerait la somme de la colonne appelée Price dans la table enfant.
Si une table possède plusieurs enfants, la syntaxe est la suivante : Child(RelationName). Par exemple, si une table possède deux tables enfants nommées Customers et Orders, et si l'objet DataRelation est nommé Customers2Orders, la référence sera la suivante :
Avg(Child(Customers2Orders).Quantity)
AGRÉGATS
Les types d'agrégats suivants sont pris en charge :
Sum (Somme)
Avg (Moyenne)
Min (Minimum)
Max (Maximum)
Count (Nombre)
StDev (Écart type statistique)
Var (Variance statistique).
Les agrégats s'exécutent généralement avec des relations. Vous pouvez créer une expression d'agrégation à l'aide d'une des fonctions répertoriées précédemment et d'une colonne de table enfant, de la manière décrite à la section RÉFÉRENCES AUX RELATIONS PARENTS/ENFANTS ci-dessus. Exemple :
Avg(Child.Price)
Avg(Child(Orders2Details).Price)
Un agrégat peut également être effectué sur une table simple. Par exemple, pour créer un résumé des valeurs d'une colonne appelée "Price" :
Sum(Price)
Remarque |
|---|
| Si vous utilisez une table unique pour créer un agrégat, il n'existe aucune fonctionnalité group-by. En effet, toutes les lignes affichent la même valeur dans la colonne. |
Si une table ne contient aucune ligne, les fonctions d'agrégation retournent référence Null (Nothing en Visual Basic).
Les types de données peuvent toujours être déterminés en examinant la propriété DataType d'une colonne. Vous pouvez également convertir les types de données à l'aide de la fonction Convert, illustrée dans la section suivante.
FUNCTIONS
Les fonctions suivantes sont également prises en charge :
CONVERT
| Description | Convertit l'expression particulière en type .NET Framework spécifié. |
| Syntaxe | Convert(expression, type) |
| Arguments | expression -- Expression à convertir. type -- Type .NET Framework dans lequel la valeur doit être convertie. |
Exemple : myDataColumn.Expression="Convert(total, 'System.Int32')"
Toutes les conversions sont valides, hormis les exceptions suivantes : Boolean, et lui seul, peut être forcé à correspondre à Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String et inversement. Char, et lui seul, peut être forcé à correspondre à Int32, UInt32, String et inversement. DateTime, et lui seul, peut être forcé à correspondre à String et inversement. TimeSpan, et lui seul, peut être forcé à correspondre à String et inversement.
LEN
| Description | Obtient la longueur d'une chaîne. |
| Syntaxe | LEN(expression) |
| Arguments | expression -- Chaîne à évaluer. |
Exemple : myDataColumn.Expression="Len(ItemName)"
ISNULL
| Description | Vérifie une expression et retourne l'expression vérifiée ou une valeur de remplacement. |
| Syntaxe | ISNULL(expression, replacementvalue) |
| Arguments | expression -- Expression à vérifier. replacementvalue -- Si l'expression est référence Null (Nothing en Visual Basic), replacementvalue est retourné. |
Exemple : myDataColumn.Expression="IsNull(price, -1)"
IIF
| Description | Obtient l'une ou l'autre valeur selon le résultat d'une expression logique. |
| Syntaxe | IIF(expr, truepart, falsepart) |
| Arguments | expr -- Expression à évaluer. truepart -- Valeur à retourner si l'expression a la valeur true. falsepart -- Valeur à retourner si l'expression a la valeur false. |
Exemple : myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
| Description | Supprime tous les caractères vierges de début ou de fin, tels que \r, \n, \t, ' ' |
| Syntaxe | TRIM(expression) |
| Arguments | expression -- Expression à tronquer. |
SUBSTRING
| Description | Obtient une sous-chaîne d'une longueur spécifiée, commençant au point déterminé de la chaîne. |
| Syntaxe | SUBSTRING(expression, start, length) |
| Arguments | expression -- Chaîne source de la sous-chaîne. start -- Entier qui spécifie le point de départ de la sous-chaîne. length -- Entier qui spécifie la longueur de la sous-chaîne. |
Exemple : myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Remarque |
|---|
| Vous pouvez réinitialiser la propriété Expression en lui assignant une valeur null ou une chaîne vide. Si une valeur par défaut est définie sur la colonne d'expression, toutes les lignes déjà remplies se voient assigner la valeur par défaut après la réinitialisation de la propriété Expression. |
ExempleL'exemple suivant crée trois colonnes dans un DataTable. La deuxième et la troisième colonne contiennent des expressions. La deuxième calcule la taxe à l'aide d'un taux de taxe variable et la troisième ajoute le résultat du calcul à la valeur de la première colonne. La table résultante s'affiche dans un contrôle DataGrid.
Private Sub CalcColumns() Dim rate As Single = .0862 dim table as DataTable = New DataTable ' Create the first column. Dim priceColumn As DataColumn = New DataColumn With priceColumn .DataType = System.Type.GetType("System.Decimal") .ColumnName = "price" .DefaultValue = 50 End With ' Create the second, calculated, column. Dim taxColumn As DataColumn = New DataColumn With taxColumn .DataType = System.Type.GetType("System.Decimal") .ColumnName = "tax" .Expression = "price * 0.0862" End With ' Create third column Dim totalColumn As DataColumn = New DataColumn With totalColumn .DataType = System.Type.GetType("System.Decimal") .ColumnName = "total" .Expression = "price + tax" End With ' Add columns to DataTable With table.Columns .Add(priceColumn) .Add(taxColumn) .Add(totalColumn) End With Dim row As DataRow= table.NewRow table.Rows.Add(row) Dim view As New DataView view.Table = table DataGrid1.DataSource = view End Sub
private void CalcColumns() { DataTable table = new DataTable (); // Create the first column. DataColumn priceColumn = new DataColumn(); priceColumn.DataType = System.Type.GetType("System.Decimal"); priceColumn.ColumnName = "price"; priceColumn.DefaultValue = 50; // Create the second, calculated, column. DataColumn taxColumn = new DataColumn(); taxColumn.DataType = System.Type.GetType("System.Decimal"); taxColumn.ColumnName = "tax"; taxColumn.Expression = "price * 0.0862"; // Create third column. DataColumn totalColumn = new DataColumn(); totalColumn.DataType = System.Type.GetType("System.Decimal"); totalColumn.ColumnName = "total"; totalColumn.Expression = "price + tax"; // Add columns to DataTable. table.Columns.Add(priceColumn); table.Columns.Add(taxColumn); table.Columns.Add(totalColumn); DataRow row = table.NewRow(); table.Rows.Add(row); DataView view = new DataView(table); dataGrid1.DataSource = view; }
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Remarque
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ