Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 pai é um Recordset gerado com uma coluna agregada (SUM(rs.population) ), uma coluna que faz referência ao Recordset filho (rs) e uma coluna para agrupar o Recordset filho (state). O nível filho é o Recordset retornado pelo comando query (), uma coluna que faz referência ao Recordset filho (rs ) e uma coluna para agrupar o Recordset filho (state ). O nível filho é o Recordset retornado pelo comando query (select * from demographics ).
As linhas de detalhes do conjunto de registros filho serão agrupadas por estado, mas, caso contrário, sem uma ordem específica. Ou seja, os grupos não estarão em ordem alfabética ou numérica. Se você quiser que o Recordset pai seja ordenado, poderá usar o método RecordsetSort para ordenar o Recordset pai.
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 |
Criança1
Estado |
Cidade |
População |
|---|---|---|
CA |
Los Angeles |
800,000 |
CA |
San Diego |
600.000 |
Child2
Estado |
Cidade |
População |
|---|---|---|
WA |
Seattle |
700.000 |
WA |
Tacoma |
US$ 500.000 |
Child3
Estado |
Cidade |
População |
|---|---|---|
OU |
Medford |
200.000 |
OU |
Portland |
400.000 |
OU |
Corvallis |
300,000 |