Recordset : calculs de totaux et autres résultats de regroupement (ODBC)
Cette rubrique s'applique aux classes ODBC MFC.
Cette rubrique explique comment utiliser des résultats de regroupement à l'aide de les mots clés suivants de SQL :
SUM calcule le total des valeurs d'une colonne par un type de données numériques.
MIN Extrait la plus petite valeur d'une colonne par un type de données numériques.
MAX Extrait la plus grande valeur d'une colonne par un type de données numériques.
AVG calcule la valeur moyenne de toutes les valeurs d'une colonne avec un type de données numériques.
COUNT Compte le nombre d'enregistrements dans une colonne de n'importe quel type de données.
Vous utilisez ces fonctions SQL pour obtenir des informations statistiques sur les enregistrements d'une source de données plutôt que pour récupérer les enregistrements de la source de données.Le recordset créé se compose généralement d'un seul enregistrement (si les colonnes sont des regroupements) contenant une valeur.(Il peut y avoir plusieurs enregistrements si vous avez utilisé une clause de GROUPER PAR .) Cette valeur est le résultat du calcul ou de l'extraction exécutée par la fonction SQL.
Conseil |
---|
Pour ajouter une clause SQL GROUPER PAR (et éventuellement une clause de HAVING ) à l'instruction SQL, ajoutez -la à la fin de m_strFilter.Par exemple : |
m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";
Vous pouvez limiter le nombre d'enregistrements que vous utilisez pour obtenir des résultats de regroupement en filtrant ou en triant les colonnes.
Attention |
---|
Certains opérateurs de regroupement retournent un type de données différent des colonnes à partir duquel ils sont regroupés. |
SUM et AVG peuvent retourner le type de données immédiatement supérieur (par exemple, un appel avec int retourne LONG ou double).
COUNT retourne généralement LONG indépendamment de la colonne cible.
MAX et retour de MIN le même type de données que les colonnes qu'elles sont calculées.
Par exemple, l'Assistant de Ajouter une classe crée longm_lSales pour recevoir la colonne sales, mais vous devez le remplacer par une donnée membre d' double m_dblSumSales pour recevoir le résultat global.Consultez l'exemple suivant.
Pour obtenir un résultat global d'un recordset
Créez un recordset comme décrit dans Ajout d'un consommateur ODBC MFC contenant les colonnes à partir duquel vous souhaitez obtenir des résultats de regroupement.
Modifiez la fonction de DoFieldExchange du recordset.Remplacez la chaîne représentant le nom de colonne (deuxième argument des appels de fonction de RFX ) avec une chaîne qui représente la fonctionnalité de regroupement de la colonne.Par exemple, remplacez :
RFX_Long(pFX, "Sales", m_lSales);
avec :
RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
Ouvrez le recordset.Le résultat de l'opération de regroupement se trouve dans m_dblSumSales.
[!REMARQUE]
L'Assistant assigne effectivement les noms des membres de données sans préfixes hongrois.Par exemple, l'Assistant génère m_Sales pour la colonne sales, plutôt que le nom d' m_lSales utilisé précédemment pour l'illustration.
Si vous utilisez une classe de CRecordView pour afficher les données, vous devez modifier l'appel de fonction DDX pour afficher la nouvelle valeur du membre de données ; dans ce cas, il faudrait :
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);
:
DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);
Voir aussi
Concepts
Recordset : sélection d'enregistrements par les recordsets (ODBC)