Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Este artigo fornece observações complementares à documentação de referência para esta API.
Um uso da Expression propriedade é criar colunas calculadas. Por exemplo, para calcular um valor de imposto, o preço unitário é multiplicado por uma taxa de imposto de uma região específica. Uma vez que as taxas de imposto variam de região para região, seria impossível colocar uma única taxa de imposto numa coluna; Em vez disso, o valor é calculado usando a Expression propriedade, conforme mostrado no código a seguir:
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
Um segundo uso é criar uma coluna agregada. Semelhante a um valor calculado, uma agregação executa uma operação com base no conjunto completo de linhas no DataTable. Um exemplo simples é contar o número de linhas retornadas no conjunto. Este é o método que você usaria para contar o número de transações concluídas por um determinado vendedor, conforme mostrado no código a seguir:
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
Sintaxe da expressão
Ao criar uma expressão, use a ColumnName propriedade para fazer referência a colunas. Por exemplo, se a ColumnName de uma coluna for "PreçoUnitário" e de outra for "Quantidade", a expressão é:
"UnitPrice * Quantity"
Observação
Se uma coluna é usada em uma expressão, então a expressão é dita como tendo uma dependência dessa coluna. Se uma coluna dependente for renomeada ou removida, não é lançada nenhuma exceção. Uma exceção será lançada quando a coluna de expressão agora quebrada for acessada.
Ao criar uma expressão para um filtro, coloque cadeias de caracteres entre aspas simples:
"LastName = 'Jones'"
Se o nome de uma coluna contiver caracteres não alfanuméricos, começar com um dígito ou corresponder (sem distinção entre maiúsculas e minúsculas) a qualquer uma das seguintes palavras reservadas, será necessário um tratamento especial, conforme descrito nos parágrafos seguintes.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
Se o nome de uma coluna satisfizer uma das condições anteriores, deve ser colocado entre parênteses retos ou entre aspas "'" (acento grave). Por exemplo, para usar uma coluna chamada "Coluna#" em uma expressão, você escreveria "[Coluna#]" ou "'Coluna#'":
Total * [Column#]
Se o nome da coluna estiver entre colchetes, então apenas os caracteres ']' e '\' nele devem ser escapados, prefixando-os com o caractere de barra invertida ("\"). Se o nome da coluna estiver entre caracteres de acento grave, não deve conter caracteres de acento grave. Por exemplo, uma coluna chamada "Column[]\" seria escrita:
Total * [Column[\]\\]
ou
Total * `Coluna[]\`
Valores definidos pelo usuário
Os valores definidos pelo usuário podem ser usados dentro de expressões para serem comparados com valores de coluna. Os valores de strings devem ser colocados entre aspas simples (e cada caractere de aspas simples em um valor de string deve ser escapado antecedendo-o com outro caractere de aspas simples). Os valores de data devem ser incluídos em sinais de libra (#) ou aspas simples (') com base no provedor de dados. São admissíveis decimais e notações científicas para valores numéricos. Por exemplo:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/2006#"
Para colunas que contêm valores de enumeração, converta o valor em um tipo de dados inteiro. Por exemplo:
"EnumColumn = 5"
Analisar expressões literais
Todas as expressões literais devem ser expressas na localidade da cultura invariante. Quando DataSet analisa e converte expressões literais, usa sempre a cultura invariante, não a cultura atual.
Os literais de cadeia de texto são identificados quando há aspas únicas à volta do valor. Por exemplo, 'John'.
Boolean literais são true e falsenão são citados em expressões.
Integer literais [+-]?[0-9]+ são tratados como System.Int32, System.Int64 ou System.Double.
System.Double pode perder a precisão dependendo do tamanho do número. Por exemplo, se o número no literal for 2147483650, DataSet tentará primeiro interpretar o número como um Int32. Isso não terá sucesso porque o número é muito grande. Neste caso DataSet, interpreta o número como um Int64, com sucesso. Se o literal for um número maior do que o valor máximo de um Int64, DataSet analisa o literal usando Double.
Literais reais que usam notação científica, como 4.42372E-30, são analisados usando System.Double.
Literais reais sem notação científica, mas com um ponto decimal, são tratados como System.Decimal. Se o número exceder os valores máximos ou mínimos suportados pelo System.Decimal, ele será analisado como um System.Double. Por exemplo:
- 142526.144524 é convertido em um
Decimal. - 345262.78036719560925667 é tratado como um
Double.
Operadores
A concatenação é permitida usando os operadores booleanos E, OU e NÃO. Você pode usar parênteses para agrupar cláusulas e forçar precedência. O operador AND tem precedência sobre outros operadores. Por exemplo:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
Quando você cria expressões de comparação, os seguintes operadores são permitidos:
- <
- >
- <=
- >=
- =
INLIKE
Os seguintes operadores aritméticos também são suportados em expressões:
- + (adição)
- - (subtração)
- * (multiplicação)
- / (divisão)
- % (módulo)
Operadores de strings
Para concatenar uma cadeia de caracteres, use o + caractere. O valor da propriedade `CaseSensitive` da classe `DataSet` determina se as comparações de cadeias de caracteres diferenciam maiúsculas de minúsculas. No entanto, você pode substituir esse valor com a CaseSensitive propriedade da DataTable classe.
Caracteres curinga
Ambos os caracteres * e % podem ser usados de forma intercambiável como caracteres curinga numa comparação LIKE. Se a cadeia de caracteres em uma cláusula LIKE contiver um * ou %, esses caracteres deverão ser colocados entre colchetes ([]). Se houver um parêntesis na cláusula, cada caractere entre parênteses deve ser colocado entre parênteses (por exemplo [[] , ou []]). Um curinga é permitido no início e no final de um padrão, ou no final de um padrão, ou no início de um padrão. Por exemplo:
"ItemName LIKE '*product*'""ItemName LIKE '*product'""ItemName LIKE 'product*'"
Caracteres curinga não são permitidos no meio de uma cadeia de caracteres. Por exemplo, 'te*xt' não é permitido.
Referência da relação pai/filho
Uma tabela pai pode ser referenciada em uma expressão precedendo o nome da coluna com Parent. Por exemplo, Parent.Price faz referência à coluna da tabela pai chamada Price.
Quando uma criança tiver mais de uma linha principal, use Parent(RelationName).ColumnName. Por exemplo, Parent(RelationName).Price faz referência à coluna da tabela pai chamada "Preço" através da relação.
Uma coluna numa tabela filha pode ser referenciada numa expressão antepondo o nome da coluna com Child. No entanto, como as relações secundárias podem retornar várias linhas, deve incluir a referência à coluna secundária em uma função agregada. Por exemplo, Sum(Child.Price) retornaria a soma da coluna nomeada Price na tabela filha.
Se uma tabela tiver mais de um filho, a sintaxe será: Child(RelationName). Por exemplo, se uma tabela tiver duas tabelas filhas nomeadas Customers e Orders, e o DataRelation objeto for nomeado Customers2Orders, a referência será a seguinte:
Avg(Child(Customers2Orders).Quantity)
Agregados
Os seguintes tipos agregados são suportados:
-
Sum(Soma) -
Avg(Média) -
Min(Mínimo) -
Max(Máximo) -
Count(Contagem) -
StDev(desvio-padrão estatístico) -
Var(Variância estatística)
Agregações são normalmente realizadas em associação com as relações. Crie uma expressão agregada usando uma das funções listadas anteriormente e uma coluna de tabela filho, conforme detalhado em Referência de relação pai/filho. Por exemplo:
Avg(Child.Price)Avg(Child(Orders2Details).Price)
Um agregado também pode ser realizado em uma única tabela. Por exemplo, para criar um resumo de números em uma coluna chamada "Preço":
Sum(Price)
Observação
Se utilizar uma única tabela para criar uma agregação, não haverá funcionalidade de agrupamento. Em vez disso, todas as linhas exibiriam o mesmo valor na coluna.
Se uma tabela não tiver linhas, as funções agregadas retornarão null.
Os tipos de dados sempre podem ser determinados examinando a DataType propriedade de uma coluna. Você também pode converter tipos de dados usando a função, mostrada Convert na seção a seguir.
Uma agregação só pode ser aplicada a uma única coluna, e nenhuma outra expressão pode ser usada dentro da agregação.
Funções
As seguintes funções também são suportadas.
CONVERT
Esta função converte uma expressão em um tipo .NET especificado.
Convert(expression, type)
| Argumento | Descrição |
|---|---|
expression |
A expressão a converter. |
type |
Tipo .NET para o qual o valor será convertido. |
Exemplo: myDataColumn.Expression="Convert(total, 'System.Int32')"
Todas as conversões são válidas com as seguintes exceções: Boolean podem ser coagidas de e para Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String e somente a si próprio.
Char pode ser convertido de e para Int32, UInt32, String, e somente para si mesmo.
DateTime pode ser convertido para e a partir de String, e apenas para si próprio.
TimeSpan pode ser convertido para e a partir de String, e apenas para si próprio.
LEN
Esta função obtém o comprimento de uma cadeia de caracteres.
LEN(expression)
| Argumentos | Descrição |
|---|---|
expression |
A cadeia de caracteres a ser avaliada. |
Exemplo: myDataColumn.Expression="Len(ItemName)"
ISNULL
Esta função verifica uma expressão e retorna a expressão verificada ou um valor de substituição.
ISNULL(expression, replacementvalue)
| Argumentos | Descrição |
|---|---|
expression |
A expressão a verificar. |
replacementvalue |
Se a expressão é null, replacementvalue é retornada. |
Exemplo: myDataColumn.Expression="IsNull(price, -1)"
IIF
Esta função obtém um de dois valores dependendo do resultado de uma expressão lógica.
IIF(expr, truepart, falsepart)
| Argumentos | Descrição |
|---|---|
expr |
A expressão a avaliar. |
truepart |
O valor a ser devolvido se a expressão for verdadeira. |
falsepart |
O valor a ser devolvido se a expressão for falsa. |
Exemplo: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')
TRIM
Esta função remove todos os caracteres em branco à esquerda e à direita, como \r, \n, \t e ' '.
TRIM(expression)
| Argumento | Descrição |
|---|---|
expression |
A expressão para cortar. |
SUBSTRING
Esta função obtém uma substring de um comprimento especificado, começando em um ponto especificado na string.
SUBSTRING(expression, start, length)
| Argumento | Descrição |
|---|---|
expression |
A cadeia de caracteres de origem para a substring |
start |
Inteiro que especifica onde a substring começa. |
length |
Inteiro que especifica o comprimento da substring. |
Exemplo: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"
Observação
Você pode redefinir a Expression propriedade atribuindo-lhe um valor nulo ou uma cadeia de caracteres vazia. Se um valor padrão for definido na coluna de expressão, todas as linhas preenchidas anteriormente receberão o valor padrão depois que a Expression propriedade for redefinida.