Cláusula COMPUTE de forma
Una cláusula COMPUTE de forma genera un objeto Recordset primario, cuyas columnas constan de una referencia al objeto Recordset secundario; columnas opcionales cuyo contenido se corresponde con capítulos, columnas nuevas o calculadas, o el resultado de ejecutar funciones de agregado en el objeto Recordset secundario o en un objeto Recordset con forma anterior; y todas las columnas del objeto Recordset secundario 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
La cláusula se compone de las siguientes partes:
child-command
Consta de los pasos siguientes:
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, será el lenguaje SQL, aunque ADO no requiere ningún lenguaje de consulta determinado.
Nombre de un objeto Recordset con forma existente.
Otro comando shape.
Palabra clave TABLE, seguida del nombre de una tabla en el proveedor de datos.
child-alias
Alias usado para hacer referencia al objeto Recordset devuelto por child-command. El valor child-alias es necesario en la lista de columnas de la cláusula COMPUTE y define la relación entre los objetos Recordset primarios y secundarios.
appended-column-list
Lista en la que cada elemento define una columna en el elemento primario generado. Cada elemento contiene una columna de capítulo, una nueva columna, una columna calculada o un valor resultante de una función de agregado en el objeto Recordset secundario.
grp-field-list
Lista de columnas de los objetos Recordset primarios y secundarios que especifica cómo se deben agrupar las filas en el elemento secundario.
Para cada columna de grp-field-list hay una columna correspondiente en los objetos Recordset secundarios y primarios. Para cada fila del objeto Recordset primario, las columnas grp-field-list tienen valores únicos, y el objeto Recordset 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 objeto Recordset secundarios se agruparán en función de las columnas de la cláusula COMPUTE. El objeto Recordset primario contendrá una fila para cada grupo de filas del objeto Recordset secundario.
Si se omite la cláusula BY, el objeto Recordset secundario se trata como un único grupo, y el objeto Recordset primario contendrá solamente una fila. Esa fila hará referencia a todo el objeto Recordset secundario. La omisión de la cláusula BY permite calcular agregados de "total general" en todo el objeto Recordset secundario.
Por ejemplo:
SHAPE {select * from Orders} AS orders COMPUTE orders, SUM(orders.OrderAmount) as TotalSales
Independientemente de la manera en que se forme el objeto Recordset primario (mediante COMPUTE o APPEND), este contendrá una columna de capítulo que se usa para relacionarlo con un objeto Recordset secundario. Si lo desea, el objeto Recordset primario también puede tener columnas que contengan agregados (SUM, MIN, MAX, etc.) sobre las filas secundarias. Tanto el objeto Recordset primario como el secundario pueden contener columnas que incluyan una expresión en la fila del objeto Recordset, así como columnas que son nuevas e inicialmente vacías.
Operación
El valor child-command se emite al proveedor, que devuelve un objeto Recordset secundario.
La cláusula COMPUTE especifica las columnas del objeto Recordset primario, que puede ser una referencia al objeto Recordset secundario, uno o varios agregados, una expresión calculada o columnas nuevas. Si hay una cláusula BY, las columnas que define también se anexan al objeto Recordset primario. La cláusula BY especifica cómo se agrupan las filas del objeto Recordset secundario.
Por ejemplo, supongamos que tiene una tabla, denominada Demographics, que consta de los campos Estado, Ciudad y Población. (Las cifras de población de la tabla se proporcionan únicamente como ejemplo).
State | City | Población |
---|---|---|
WA | Seattle | 700 000 |
O BIEN | Medford | 200 000 |
O BIEN | Portland | 400.000 |
CA | Los Angeles | 800 000 |
CA | San Diego | 600 000 |
WA | Tacoma | 500.000 |
O BIEN | Corvallis | 300 000 |
Ahora, emita este comando de forma:
rst.Open "SHAPE {select * from demographics} AS rs " & _
"COMPUTE rs, SUM(rs.population) BY state", _
objConnection
Este comando abre un objeto Recordset con forma con dos niveles. El nivel primario es un objeto Recordset generado con una columna de agregado (SUM(rs.population)
), una columna que hace referencia al objeto Recordset secundario (rs
) y una columna para agrupar el objeto Recordset secundario (state
). El nivel secundario es el objeto Recordset devuelto por el comando de consulta (select * from demographics
).
Las filas de detalles del objeto Recordset secundario se agruparán por estado, pero sin seguir ningún orden particular. Es decir, los grupos no estarán en orden alfabético ni numérico. Si desea que se ordene el objeto Recordset primario, puede usar el método Recordset Sort para ordenar el objeto Recordset primario.
Ahora puede navegar por el objeto Recordset primario abierto y acceder a los objetos Recordset de detalles secundarios. Para obtener más información, consulte: Obtener acceso a filas en un Recordset jerárquico.
Conjuntos de registros de detalles primarios y secundarios resultantes
Parent
SUM (rs. Población) | rs | State |
---|---|---|
1 300 000 | Referencia a child1 | CA |
1 200 000 | Referencia a child2 | WA |
1 100 000 | Referencia a child3 | O BIEN |
Secundario1
State | City | Población |
---|---|---|
CA | Los Angeles | 800 000 |
CA | San Diego | 600 000 |
Secundario2
State | City | Población |
---|---|---|
WA | Seattle | 700 000 |
WA | Tacoma | 500.000 |
Secundario3
State | City | Población |
---|---|---|
O BIEN | Medford | 200 000 |
O BIEN | Portland | 400.000 |
O BIEN | Corvallis | 300 000 |
Consulte también
Acceso a las filas en un conjunto de registros jerárquico
Información general sobre la forma de datos
Objeto Field
Gramática formal de forma
Objeto de conjunto de registros (ADO)
Proveedores deseados para dar forma a datos
Cláusula APPEND Shape
Comandos Shape en General
Value (propiedad) (ADO)
Visual Basic para las funciones de aplicaciones