Conjunto de registros: Obtener cálculos SUM y otros resultados agregados (ODBC)
Nota:
El Asistente para consumidores ODBC MFC no está disponible en Visual Studio 2019 ni en versiones posteriores. Aun así, puede crear un consumidor manualmente.
Este tema es aplicable a las clases ODBC de MFC.
En este tema se explica cómo obtener resultados agregados mediante las siguientes palabras clave de SQL:
SUMA calcula el total de los valores de una columna con un tipo de datos numérico.
MIN extrae el valor menor de una columna con un tipo de datos numérico.
MAX extrae el valor mayor de una columna con un tipo de datos numérico.
AVG calcula la media de todos los valores de una columna con un tipo de datos numérico.
COUNT cuenta el número de registros de una columna de cualquier tipo de datos.
Puede usar estas funciones SQL para obtener información estadística sobre los registros de un origen de datos, en lugar de extraer los registros de este. El conjunto de registros que se crea suele constar de un solo registro (si todas las columnas son agregados) que contiene un valor. (Puede haber más de un registro si usó una cláusula GROUP BY). Este valor es el resultado del cálculo o la extracción que realiza la función SQL.
Sugerencia
Para agregar una cláusula GROUP BY de SQL (y posiblemente una cláusula HAVING) a la instrucción SQL, debe anexarla al final de m_strFilter
. Por ejemplo:
m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";
Puede limitar el número de registros que usa para obtener resultados agregados mediante el filtrado y la ordenación de las columnas.
Precaución
Algunos operadores de agregación devuelven un tipo de datos diferente de las columnas que están agregando.
SUM y AVG podrían devolver el siguiente tipo de datos mayor (por ejemplo, una llamada con
int
devuelve LONG odouble
).COUNT suele devolver LONG, independientemente del tipo de columna de destino.
MAX y MIN devuelven el mismo tipo de datos que el de las columnas que calculan.
Por ejemplo, el Asistente para Agregar clase crea
long
m_lSales
para alojar una columna Sales, pero esto se debe reemplazar por un miembro de datosdouble m_dblSumSales
para alojar el resultado agregado. Consulte el ejemplo siguiente.
Para obtener un resultado agregado para un conjunto de registros
Cree un conjunto de registros, como se describe en Agregar un consumidor ODBC de MFC, que contenga las columnas de las que quiere obtener resultados agregados.
Modifique la función DoFieldExchange para el conjunto de registros. Reemplace la cadena que representa el nombre de columna (el segundo argumento de las llamadas de función RFX) por una cadena que represente la función de agregación en la columna. Por ejemplo, reemplace:
RFX_Long(pFX, "Sales", m_lSales);
Por:
RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
Abra el conjunto de registros. El resultado de la operación de agregación se deja en
m_dblSumSales
.
Nota:
El asistente asigna los nombres de los miembros de datos sin prefijos de notación húngara. Por ejemplo, el asistente produciría m_Sales
para una columna Sales, en lugar del nombre m_lSales
usado anteriormente como ejemplo.
Si usa una clase CRecordView para ver los datos, tendrá que cambiar la llamada de función DDX para mostrar el nuevo valor del miembro de datos. En este caso, cámbielo de:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);
A:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);
Consulte también
Conjunto de registros (ODBC)
Conjunto de registros: Cómo se seleccionan los registros (ODBC)