Compartilhar via


Cláusula de cálculo de forma

Aplica-se ao: Access 2013, Office 2013

Uma cláusula COMPUTE de forma gera um Recordset pai, cujas colunas consistem em uma referência ao Recordset filho; colunas opcionais cujo conteúdo são colunas de capítulo, colunas novas ou colunas calculadas, ou o resultado da execução de funções agregadas no Recordset filho ou em um Recordset com formato anterior; e todas as colunas do Recordset filho listado 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 dessa cláusula são as seguintes:

  • child-command

    • Consiste em um dos itens a seguir:

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

      • O nome de um Recordset com formato existente.

      • Um outro comando shape.

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

  • child-alias

    • Um alias usado para se referir ao Recordset retornado por child-command. O child-alias é necessário na lista de colunas na cláusula COMPUTE e define a relação entre os objetos Recordset pai e filho.
  • appended-column-list

    • Uma lista na qual cada elemento define uma coluna no pai gerado. Cada elemento consiste em uma coluna de capítulo, uma nova coluna, uma coluna calculada ou um valor resultante de uma função de agregação no Recordset filho.
  • grp-field-list

    • Uma lista de colunas nos objetos Recordset pai e filho que especifica o modo de agrupamento das linhas no filho. Para cada coluna em grp-field-list, há uma coluna correspondente nos objetos Recordset pai e filho. Para cada linha no Recordset pai, são exibidos valores exclusivos nas colunas grp-field-list, e o Recordset filho referenciado pela linha pai consiste apenas em linhas filho cujas colunas grp-field-list têm os mesmos valores da linha pai.

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

Se a cláusula BY for omitida, todo o Recordset filho será tratado como um único grupo e o Recordset pai conterá exatamente uma linha. Essa linha fará referência a todo o Recordset filho. A omissão da cláusula BY permite calcular o "total geral" de agregados em todo o Recordset filho.

Por exemplo:

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

Independentemente do modo de formação do Recordset pai (usando COMPUTE ou APPEND), ele conterá uma coluna de capítulo usada para relacioná-lo a um Recordset filho. Se você desejar, o Recordset pai também poderá conter colunas com agregados (SUM, MIN, MAX etc.) nas linhas filho. Os objetos Recordset pai e filho podem conter colunas com uma expressão na linha de Recordset, bem como colunas novas e inicialmente vazias.

Operação

child-command é emitido para o provedor, que retorna um Recordset filho.

A cláusula COMPUTE especifica as colunas do Recordset pai, que pode ser uma referência ao Recordset filho, um ou mais agregados, uma expressão calculada ou novas colunas. Se houver uma cláusula BY, as colunas definidas por ela também serão acrescentadas ao Recordset pai. A cláusula BY especifica o modo de agrupamento do Recordset filho.

Por exemplo, suponha que você tenha uma tabela — Demografia — contendo os campos Estado, Cidade e População (os números referentes à população são apenas para fins ilustrativos).

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

US$ 500.000

OU

Corvallis

300,000

Agora, emita este comando shape:

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

O comando abre um Recordset com formato de dois níveis. O nível principal é um Conjunto de Registos gerado com uma coluna agregada (SUM(rs.population), uma coluna que referencia o Conjunto de Registos subordinado (rs) e uma coluna para agrupar o Conjunto de Registos subordinado (estado). O nível subordinado é o Conjunto de registos devolvido pelo comando de consulta (), uma coluna que referencia o conjunto de registos subordinado (rs) e uma coluna para agrupar o Conjunto de Registos subordinado (estado ). O nível subordinado é o Conjunto de registos devolvido pelo comando de consulta (selecione * em dados demográficos ).

As linhas de detalhes do Conjunto de registos subordinados serão agrupadas por estado, mas não por nenhuma ordem específica. Ou seja, os grupos não estarão por ordem alfabética ou numérica. Se pretender que o Conjunto de Registos principal seja encomendado, pode utilizar o método Ordenação do Conjunto de Registos para ordenar o Conjunto de Registos principal.

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

Conjuntos de registros de detalhes pai e filho resultantes

Parent

SUM (rs.Population)

rs

Estado

1,300,000

Referência ao filho1

CA

1.200.000

Referência ao filho2

WA

1,100,000

Referência ao filho3

OU

Subordinado1

Estado

Cidade

População

CA

Los Angeles

800,000

CA

San Diego

600.000

Subordinado2

Estado

Cidade

População

WA

Seattle

700.000

WA

Tacoma

US$ 500.000

Subordinado3

Estado

Cidade

População

OU

Medford

200.000

OU

Portland

400.000

OU

Corvallis

300,000