Partilhar via


Cláusula SHAPE COMPUTE

Uma cláusula COMPUTE gerada por estruturação produz um recordset pai , cujas colunas consistem em uma referência ao recordset filho ; inclui colunas opcionais cujo conteúdo pode ser capítulo, novas colunas, colunas calculadas ou o resultado de executar funções de agregação no recordset filho ou em um recordset já estruturado ; além das colunas do recordset filho listadas na cláusula BY opcional.

Sintaxe

SHAPE child-command [AS] child-alias  
   COMPUTE child-alias [[AS] name], [appended-column-list]  
   [BY grp-field-list]  

Descrição

As partes desta cláusula são as seguintes:

comando filho
Consiste em um dos seguintes:

  • Um comando de consulta dentro de chaves ("{}") que retorna um objeto Recordset filho. O comando é emitido para o provedor de dados subjacente e sua sintaxe depende dos requisitos desse provedor. Normalmente, essa será a linguagem SQL, embora o ADO não exija nenhuma linguagem de consulta específica.

  • O nome de um conjunto de registros de em forma existente.

  • Outro comando de forma.

  • A palavra-chave TABLE, seguida pelo nome de uma tabela no provedor de dados.

filho-alias
Um alias usado para se referir ao Recordset retornado pelo comando filho. O de alias filho é necessário na lista de colunas na cláusula COMPUTE e define a relação entre os objetos recordset pai e filho.

lista de colunas acrescentadas
Uma lista em que cada elemento define uma coluna no elemento pai gerado. Cada elemento contém uma coluna de capítulo, uma coluna nova, uma coluna calculada ou um valor resultante de uma função de agregação aplicada no conjunto de registros filho .

grp-field-list
Uma lista de colunas no conjunto de registros pai e filho objetos que especificam como as linhas devem ser agrupadas no filho.

Para cada coluna na grp-field-list, há uma coluna correspondente nos objetos Recordset pai e filho. Para cada linha no conjunto de registros pai , as colunas grp-field-list possuem valores exclusivos. O conjunto de registros filho , referenciado pela linha pai, é composto apenas por linhas filhas cujas colunas grp-field-list possuem os mesmos valores da linha pai.

Caso a cláusula BY seja incluída, as linhas do Recordset filho serão agrupadas com base nas colunas especificadas na cláusula COMPUTE. O Conjunto de Registros pai conterá uma linha para cada grupo de linhas no Conjunto de Registros filho.

Se a cláusula BY for omitida, o registro filho Recordset será tratado como um único grupo e o registro pai Recordset conterá exatamente uma linha. Essa linha referenciará todo o Conjunto de Registros filho . Omitir a cláusula BY permite que você calcule agregações de "total geral" em todo o Recordset filho .

Por exemplo:

SHAPE {select * from Orders} AS orders             COMPUTE orders, SUM(orders.OrderAmount) as TotalSales         

Independentemente de como o Conjunto de Registros pai é formado (usando COMPUTE ou usando APPEND), ele conterá uma coluna de capítulo usada para relacioná-lo a um Conjunto de Registros filho. Se desejar, o Recordset pai também pode conter colunas que apresentam agregações (SOMA, MIN, MAX, etc.) nas linhas filhas. Tanto o pai quanto o filho Recordset podem conter colunas que contêm uma expressão na linha no Recordset , bem como colunas que são novas e inicialmente vazias.

Operação

O de comando filho é emitido para o provedor, que retorna um Recordset filho.

A cláusula COMPUTE especifica as colunas do conjunto de registros pai, que pode ser uma referência ao conjunto de registros filho, uma ou mais agregações, uma expressão calculada ou novas colunas. Se houver uma cláusula BY, as colunas definidas por ela também serão acrescentadas ao conjunto de registros pai. A cláusula BY especifica como as linhas do conjunto de registros filho são agrupadas.

Por exemplo, suponha que você tenha uma tabela chamada Demografia, que consiste em campos Estado, Cidade e População. (Os números de população na tabela são fornecidos apenas como um exemplo).

Estado Cidade População
WA Seattle 700,000
OU Medford 200,000
OU Portland 400,000
CA Los Angeles 800,000
CA San Diego 600,000
WA Tacoma 500,000
OU Corvallis 300,000

Agora, emita este comando de shape:

rst.Open  "SHAPE {select * from demographics} AS rs "  & _  
          "COMPUTE rs, SUM(rs.population) BY state", _  
           objConnection  

Este comando abre um Recordset formatado com dois níveis. O nível pai é um de conjunto de registros gerado com uma coluna de agregação (SUM(rs.population)), uma coluna que faz referência ao (rs) do Recordset filho e uma coluna para agrupar o de Conjunto de Registros filho (state). O nível filho é o Recordset retornado pelo comando de consulta (select * from demographics).

As linhas de detalhes do filho Recordset serão agrupadas por estado, mas, caso contrário, em nenhuma ordem específica. Ou seja, os grupos não estarão em ordem alfabética ou numérica. Se quiser que o parent Recordset seja ordenado, pode usar o método Recordset Sort para ordenar o parent Recordset.

Agora você pode navegar pelo do Recordset pai aberto e acessar os detalhes filho objetos recordset. Para obter mais informações, consulte Acessando linhas em um conjunto de registros hierárquico.

Conjuntos de registros de detalhes pai e filho resultantes

Responsável

SOMA (rs.População) rs Estado
1,300,000 Referência a child1 CA
1,200,000 Referência a child2 WA
1,100,000 Referência ao filho3 OU

Criança1

Estado Cidade População
CA Los Angeles 800,000
CA San Diego 600,000

Criança 2

Estado Cidade População
WA Seattle 700,000
WA Tacoma 500,000

Child3

Estado Cidade População
OU Medford 200,000
OU Portland 400,000
OU Corvallis 300,000

Consulte Também

acessando linhas em um conjunto de registros hierárquico
Visão geral da formatação de dados
Objeto de Campo
Gramática Formal de Formas
do objeto Recordset (ADO)
Provedores Necessários para Configuração de Dados
Cláusula APPEND de Forma
comandos de forma em geral
propriedade Value (ADO)
funções do Visual Basic for Applications