Cláusula SHAPE COMPUTE
Una cláusula COMPUTE de forma genera un Recordset primario, cuyas columnas constan de una referencia al objeto secundario Recordset; columnas opcionales cuyo contenido son columnas de capítulo, nuevas o calculadas, o el resultado de ejecutar funciones de agregado en el objeto secundario Recordset o un objeto recordset con forma anterior ; y todas las columnas del objeto secundario recordset enumeradas en la cláusula BY opcional.
Sintaxis
SHAPE child-command [AS] child-alias
COMPUTE child-alias [[AS] name], [appended-column-list]
[BY grp-field-list]
Descripción
Las partes de esta cláusula son las siguientes:
comandos secundarios
Consta de uno de los siguientes elementos:
Comando de consulta entre llaves ("{}") que devuelve un objeto recordset secundario . El comando se emite al proveedor de datos subyacente y su sintaxis depende de los requisitos de ese proveedor. Normalmente, este será el lenguaje SQL, aunque ADO no requiere ningún lenguaje de consulta determinado.
Nombre de un objeto Recordset con forma existente .
Otro comando de forma.
La palabra clave TABLE, seguida del nombre de una tabla en el proveedor de datos.
alias secundario
Alias utilizado para hacer referencia al Recordset devuelto por el comando hijo . El alias secundario es necesario en la lista de columnas de la cláusula COMPUTE y define la relación entre los objetos Recordset primario y secundario.
lista de columnas adjuntas
Lista en la que cada elemento define una columna en el elemento primario generado. Cada elemento contiene una columna de capítulo, una columna nueva, una columna calculada o un valor resultante de una función de agregado en el objeto secundario Recordset.
grp-field-list
Lista de columnas en los objetos recordset padre e hijo que especifica cómo se deben agrupar las filas en el hijo.
Para cada columna de la grp-field-list, hay una columna correspondiente en los objetos secundarios y primarios Recordset. Para cada fila del conjunto de registros primario , las columnas grp-field-list tienen valores únicos, y el conjunto de registros secundario al que hace referencia la fila primaria consta únicamente de filas secundarias cuyas columnas grp-field-list tienen los mismos valores que la fila primaria.
Si se incluye la cláusula BY, las filas del Recordset secundario se agruparán en función de las columnas de la cláusula COMPUTE. El recordset primario contendrá una fila para cada grupo de filas del recordset secundario.
Si se omite la cláusula BY, todo el recordset secundario se trata como un único grupo y el recordset primario contendrá exactamente una fila. Esa fila hará referencia a todo el conjunto de registros secundario . La omisión de la cláusula BY permite calcular agregados "totales generales" en todo el conjunto de registros secundario Recordset.
Por ejemplo:
SHAPE {select * from Orders} AS orders COMPUTE orders, SUM(orders.OrderAmount) as TotalSales
Independientemente de cómo se forma el conjunto de registros primario (mediante COMPUTE o mediante APPEND), contendrá una columna de capítulos que se utiliza para relacionarla con un Recordset secundario . Si lo desea, el conjunto de registros primario también puede contener columnas que contengan agregados (SUM, MIN, MAX, etc.) sobre las filas secundarias. Tanto el objeto primario como el secundario recordset pueden contener columnas que contienen una expresión en la fila del recordset, así como columnas que son nuevas e inicialmente vacías.
Operación
El comando secundario se emite al proveedor, que devuelve un Recordset secundario .
La cláusula COMPUTE especifica las columnas del conjunto de registros primario Recordset, que puede ser una referencia al conjunto de registros secundario Recordset, una o más funciones agregadas, una expresión calculada o columnas nuevas. Si hay una cláusula BY, las columnas que define también se anexan al objeto primario Recordset. La cláusula BY especifica cómo se agrupan las filas del objeto secundario recordset.
Por ejemplo, supongamos que tiene una tabla, denominada Datos demográficos, que consta de campos Estado, Ciudad y Población. (Las cifras de población de la tabla se proporcionan únicamente como ejemplo).
Estado | Ciudad | Población |
---|---|---|
WA | Seattle | 700,000 |
O | Medford | 200,000 |
O | Portland | 400,000 |
CA | Los Ángeles | 800,000 |
CA | San Diego | 600,000 |
WA | Tacoma | 500,000 |
O | Corvallis | 300,000 |
Ahora, emita este comando shape:
rst.Open "SHAPE {select * from demographics} AS rs " & _
"COMPUTE rs, SUM(rs.population) BY state", _
objConnection
Este comando abre un conjunto de registros con forma con dos niveles. El nivel primario es un conjunto de registros generado con una columna de agregado (SUM(rs.population)
), una columna que hace referencia al conjunto de registros secundario (rs
) y una columna para agrupar el conjunto de registros secundario (state
). El nivel secundario es el recordset devuelto por el comando de consulta (select * from demographics
).
El conjunto de registros filas de detalles se agruparán por estado, pero sin ningún orden particular. Es decir, los grupos no estarán en orden alfabético o numérico. Si desea que el Recordset primario esté ordenado, puede usar el método Recordset Sort para ordenar el Recordsetprimario.
Ahora puede navegar por el Recordset abierto y acceder a los objetos de detalle secundarios del Recordset . Para obtener más información, vea Acceder a Filas en un Conjunto de Registros Jerárquico.
Conjuntos de registros detallados padre e hijo resultantes
Padre
SUMA (rs.Población) | rs | Estado |
---|---|---|
1,300,000 | Referencia a niño1 | CA |
1,200,000 | Referencia a child2 | WA |
1,100,000 | Referencia a child3 | O |
Hijo1
Estado | Ciudad | Población |
---|---|---|
CA | Los Ángeles | 800,000 |
CA | San Diego | 600,000 |
Niño2
Estado | Ciudad | Población |
---|---|---|
WA | Seattle | 700,000 |
WA | Tacoma | 500,000 |
Child3
Estado | Ciudad | Población |
---|---|---|
O | Medford | 200,000 |
O | Portland | 400,000 |
O | Corvallis | 300,000 |
Consulte también
acceder a filas en un conjunto de registros jerárquico
Descripción general del modelado de datos
Objeto de Campo
gramática de formas formales
objeto Recordset (ADO)
Proveedores requeridos para el moldeado de datos
cláusula de añadir forma
Comandos de forma en general
propiedad Value (ADO)
funciones de Visual Basic para Aplicaciones