Biblioteca de clases de .NET Framework
DataColumn.Expression (Propiedad)

Obtiene o establece la expresión utilizada para filtrar filas, calcular los valores de una columna o crear una columna agregada.

Espacio de nombres: System.Data
Ensamblado: System.Data (en system.data.dll)

Sintaxis

Visual Basic (Declaración)
Public Property Expression As String
Visual Basic (Uso)
Dim instance As DataColumn
Dim value As String

value = instance.Expression

instance.Expression = value
C#
public string Expression { get; set; }
C++
public:
property String^ Expression {
    String^ get ();
    void set (String^ value);
}
J#
/** @property */
public String get_Expression ()

/** @property */
public void set_Expression (String value)
JScript
public function get Expression () : String

public function set Expression (value : String)

Valor de propiedad

Expresión para calcular el valor de una columna o para crear una columna agregada. El tipo de valor devuelto de una expresión está determinado por el DataType de la columna.
Excepciones

Tipo de excepciónCondición

ArgumentException

Las propiedades AutoIncrement o Unique están establecidas en true.

FormatException

Al utilizar la función CONVERT, la expresión se evalúa como cadena, pero la cadena no contiene una representación que se pueda convertir al parámetro de tipo.

InvalidCastException

Al utilizar la función CONVERT, la conversión solicitada no es posible. Consulte la función de conversión de la siguiente sección para obtener información detallada sobre las posibles conversiones.

ArgumentOutOfRangeException

Al utilizar la función SUBSTRING, el argumento de inicio está fuera del intervalo.

O bien

Al utilizar la función SUBSTRING, el argumento de longitud está fuera del intervalo.

Exception

Al utilizar la función LEN o TRIM, la expresión no se evalúa como cadena. Esto incluye expresiones que se evalúan como Char.

Comentarios

Uno de los usos de la propiedad Expression es para crear columnas calculadas. Por ejemplo, para calcular el valor de un impuesto el precio unitario se multiplica por el tipo impositivo de una región concreta. Puesto que los tipos impositivos varían de una región a otra, sería imposible colocar un único tipo impositivo en una columna; en su lugar, se calcula el valor mediante la propiedad Expression, tal como se muestra en el código de Visual Basic que aparece en la siguiente sección:

DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0,086"

Un segundo uso es para crear una columna agregada. Similar a un valor calculado, un agregado realiza una operación basada en todo el conjunto de filas del objeto DataTable. Un ejemplo sencillo es el recuento del número de filas devuelto en el conjunto. Éste es el método que se utilizaría para contar el número de transacciones finalizadas por un vendedor determinado, como se muestra en este código de Visual Basic:

 DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"

Sintaxis de las expresiones

Cuando cree una expresión, utilice la propiedad ColumnName para hacer referencia a las columnas. Por ejemplo, si la propiedad ColumnName para una columna es "UnitPrice" y para otra "Quantity", la expresión será:

"UnitPrice * Quantity"

NotaNota

Si en una expresión se utiliza una columna, se dice que la expresión tiene una dependencia de esa columna. Cuando se cambia el nombre o se quita la columna de la que depende la expresión, no se inicia ninguna excepción. Pero se producirá una excepción cuando se obtenga acceso a la columna de la expresión ahora interrumpida.

Al crear una expresión para un filtro, las cadenas se deben escribir entre comillas sencillas:

"LastName = 'Jones'"

Los caracteres siguientes son especiales y se deben establecer como secuencias de escape (como se explica ahora) si se van a utilizar en un nombre de columna:

\n (nueva línea)

\t (tabulación)

\r (retorno de carro)

~

(

)

#

\

/

=

>

<

+

-

*

%

&

|

^

'

"

[

]

Si un nombre de columna contiene uno de los caracteres anteriores, el nombre se debe incluir entre corchetes. Por ejemplo, para utilizar una columna denominada "Column#" en una expresión, se deberá escribir "[Column#]":

Total * [Column#]

Puesto que los corchetes son caracteres especiales, se debe utilizar una barra diagonal ("\") para crear un carácter de escape para el corchete, si forma parte de un nombre de columna. Por ejemplo, una columna denominada "Column[]" se escribirá:

Total * [Column[\]]

Sólo se debe crear un carácter de escape para el segundo corchete.

VALORES DEFINIDOS POR EL USUARIO

Los valores definidos por el usuario se pueden utilizar en expresiones para compararlos con valores de columnas. Los valores de cadena se deben escribir entre comillas sencillas. Los valores de fecha se deben poner entre símbolos de libra esterlina (#). Se permiten decimales y notaciones científicas para los valores numéricos. Por ejemplo:

"FirstName = 'John'"

"Price <= 50.00"

"Birthdate < #31/1/82#"

Para las columnas que contienen valores de enumeración, el valor se convierte en un tipo de datos entero. Por ejemplo:

"EnumColumn = 5"

OPERADORES

Se permite la concatenación mediante operadores booleanos AND, OR y NOT. Se pueden utilizar paréntesis para agrupar cláusulas y forzar una precedencia. El operador AND tiene precedencia sobre otros operadores. Por ejemplo:

(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

Al crear expresiones de comparación, se permiten los siguientes operadores:

<

>

<=

>=

<>

=

IN

LIKE

También se admiten los siguientes operadores aritméticos en las expresiones:

+ (suma)

- (resta)

* (multiplicación)

/ (división)

% (módulo)

OPERADORES DE CADENA

Para concatenar una cadena se utiliza el carácter +. El valor de la propiedad CaseSensitive de la clase DataSet determina si en las comparaciones de cadenas se distingue entre mayúsculas y minúsculas. Sin embargo, se puede reemplazar ese valor por la propiedad CaseSensitive de la clase DataTable.

CARACTERES COMODÍN

Tanto * como % se pueden utilizar indistintamente como caracteres comodín en una comparación LIKE. Si la cadena de una cláusula LIKE contiene un carácter * o %, dichos caracteres se deben establecer como caracteres de escape entre corchetes ([]). Si hay un corchete en la cláusula, los caracteres de corchete se deben establecer como caracteres de escape entre corchetes (por ejemplo, [[] o []]). Se permite un carácter comodín al comienzo y al final de un modelo, al final de un modelo o bien al comienzo de un modelo. Por ejemplo:

"ItemName LIKE '*product*'"

"ItemName LIKE '*product'"

"ItemName LIKE 'product*'"

No se permiten los caracteres comodín en mitad de una cadena. Por ejemplo, no se admite 'te*xt'.

REFERENCIA A RELACIONES PRIMARIAS Y SECUNDARIAS

Se puede hacer una referencia a una tabla primaria en una expresión anteponiendo Parent al nombre de la columna. Por ejemplo, Parent.Price hace referencia a la columna denominada Price de la tabla primaria.

Se puede hacer referencia a una columna de una tabla secundaria en una expresión anteponiendo Child al nombre de la columna. Sin embargo, dado que las relaciones secundarias pueden devolver varias filas, se debe incluir la referencia a la columna secundaria en una función de agregado. Por ejemplo, Sum(Child.Price) devolvería la suma de la columna denominada Price de la tabla secundaria.

Si una tabla tiene varias tablas secundarias, la sintaxis es: Child(RelationName). Por ejemplo, si una tabla tiene dos tablas secundarias denominadas Customers y Orders, y el objeto DataRelation se denomina Customers2Orders, la referencia sería la siguiente:

Avg(Child(Customers2Orders).Quantity)

AGREGADOS

Se admiten los siguientes tipos de agregados:

Sum (Suma)

Avg (Promedio)

Min (Mínimo)

Max (Máximo)

Count (Recuento)

StDev (Desviación estadística estándar)

Var (Varianza estadística).

Normalmente los agregados se llevan a cabo en las relaciones. Cree una expresión de agregado mediante una de las funciones enumeradas anteriormente y una columna de una tabla secundaria, como se describe en el apartado REFERENCIA A RELACIONES PRIMARIAS Y SECUNDARIAS que se ha analizado anteriormente. Por ejemplo:

Avg(Child.Price)

Avg(Child(Orders2Details).Price)

Un agregado también se puede realizar en una sola tabla. Por ejemplo, para crear un resumen de cifras de una columna denominada "Price":

Sum(Price)

NotaNota

Si se utiliza una sola tabla para crear un agregado, no habrá ninguna funcionalidad de agrupación. En su lugar, todas las filas mostrarán el mismo valor en la columna.

Si una tabla no tiene filas, las funciones de agregado devolverán referencia de objeto null (Nothing en Visual Basic).

Los tipos de datos siempre se pueden determinar mediante el examen de la propiedad DataType de una columna. También se pueden convertir los tipos de datos mediante la función Convert, como se muestra en la siguiente sección.

FUNCTIONS

También se admiten las funciones siguientes:

CONVERT

Descripción

Convierte una expresión concreta en un tipo de .NET Framework especificado.

Sintaxis

Convert( expression, type )

Argumentos

expression: expresión que se va a convertir.

type: tipo de .NET Framework al que se convertirá el valor.

Ejemplo: myDataColumn.Expression="Convert(total, 'System.Int32')"

Todas las conversiones son válidas con las siguientes excepciones: Boolean sólo se puede convertir en y desde Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String y él mismo. Char sólo se puede convertir en y desde Int32, UInt32, String y él mismo. DateTime sólo se puede convertir en y desde String y él mismo. TimeSpan sólo se puede convertir en y desde String y él mismo.

LEN

Descripción

Obtiene la longitud de una cadena.

Sintaxis

LEN( expression )

Argumentos

expression: cadena que se va a evaluar.

Ejemplo: myDataColumn.Expression="Len(ItemName)"

ISNULL

Descripción

Comprueba una expresión y devuelve la expresión comprobada o un valor de sustitución.

Sintaxis

ISNULL( expression, replacementvalue )

Argumentos

expression: expresión que se va a comprobar.

replacementvalue: si la expresión es referencia de objeto null (Nothing en Visual Basic), se devuelve replacementvalue.

Ejemplo: myDataColumn.Expression="IsNull(price, -1)"

IIF

Descripción

Obtiene uno de entre dos valores, dependiendo del resultado de una expresión lógica.

Sintaxis

IIF( expr, truepart, falsepart )

Argumentos

expr: expresión que se va a evaluar.

truepart: valor que se devolverá si la expresión es true.

falsepart: valor que se devolverá si la expresión es false.

Ejemplo: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')

TRIM

Descripción

Quita todos los caracteres en blanco iniciales y finales, como \r, \n, \t, ' '.

Sintaxis

TRIM( expression )

Argumentos

expression: expresión que se va a recortar.

SUBSTRING

Descripción

Obtiene una subcadena de una longitud especificada, empezando por un punto concreto de la cadena.

Sintaxis

SUBSTRING(expression, start, length)

Argumentos

expression: cadena de origen para la subcadena.

start: entero que especifica dónde comienza la subcadena.

length: entero que especifica la longitud de la subcadena.

Ejemplo: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"

NotaNota

Se puede restablecer la propiedad Expression asignándole un valor nulo o una cadena vacía. Si se establece un valor predeterminado en la columna de expresión, se asignará el valor predeterminado a todas las filas rellenadas anteriormente después de restablecer la propiedad Expression.

Ejemplo

En el ejemplo siguiente se crean tres columnas en un DataTable. La segunda y la tercera columna contienen expresiones; la segunda calcula impuestos mediante un tipo impositivo variable y la tercera agrega el resultado del cálculo al valor de la primera columna. La tabla resultante aparece en un control DataGrid.

Visual Basic
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
C#
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;
}
Plataformas

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

Información de versión

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Vea también

Etiquetas :


Page view tracker