Partager via


Recordset : calculs de totaux et autres résultats de regroupement (ODBC)

Remarque

L’Assistant Consommateur ODBC MFC n’est pas disponible dans Visual Studio 2019 et ultérieur. Vous pouvez toujours créer un consommateur manuellement.

Cette rubrique s’applique aux classes ODBC MFC.

Cette rubrique explique comment obtenir les résultats d’agrégation avec les mots clés SQL suivants :

  • SUM calcule le total des valeurs dans une colonne ayant un type de données numérique.

  • MIN extrait la plus petite valeur dans une colonne ayant un type de données numérique.

  • MAX extrait la plus grande valeur dans une colonne ayant un type de données numérique.

  • AVG calcule une valeur moyenne de toutes les valeurs dans une colonne ayant un type de données numérique.

  • COUNT comptabilise le nombre d’enregistrements dans une colonne de n’importe quel type de données.

Ces fonctions SQL s’utilisent pour obtenir des informations statistiques sur les enregistrements contenus dans une source de données plutôt que pour extraire des enregistrements de la source de données. Le recordset créé se compose généralement d’un seul enregistrement (si toutes les colonnes sont des agrégats) contenant une valeur. (Il peut y avoir plusieurs enregistrements si vous avez utilisé une clause GROUP BY.) Cette valeur est le résultat de l’opération de calcul ou d’extraction effectuée par la fonction SQL.

Conseil

Quand vous ajoutez une clause SQL GROUP BY (et éventuellement une clause HAVING) à l’instruction SQL, placez-la à la fin de m_strFilter. Par exemple :

m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";

Vous pouvez limiter le nombre d’enregistrements utilisés pour obtenir des résultats d’agrégation en filtrant et en triant les colonnes.

Attention

Certains opérateurs d’agrégation retournent un type de données différent des colonnes sur lesquelles porte l’agrégation.

  • SUM et AVG peuvent retourner un type de données de longueur immédiatement supérieure (par exemple, l’appel avec int retourne le type LONG ou double).

  • COUNT retourne généralement le type LONG indépendamment du type de la colonne cible.

  • MAX et MIN retournent le même type de données que les colonnes utilisées pour le calcul.

    Par exemple, l’Assistant Ajouter une classe crée long m_lSales pour contenir une colonne Sales, mais vous devez le remplacer par un membre de données double m_dblSumSales pouvant contenir le résultat de l’agrégation. Consultez l’exemple qui suit.

Pour obtenir un résultat d’agrégation à partir d’un recordset

  1. En suivant les étapes décrites dans Ajout d’un consommateur ODBC MFC, créez un recordset contenant les colonnes à partir desquelles vous souhaitez obtenir un résultat d’agrégation.

  2. Modifiez la fonction DoFieldExchange pour le recordset. Remplacez la chaîne représentant le nom de colonne (le deuxième argument dans les appels de fonction RFX) par une chaîne représentant la fonction d’agrégation appliquée sur la colonne. Par exemple, remplacez :

    RFX_Long(pFX, "Sales", m_lSales);
    

    par :

    RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
    
  3. Ouvrez le recordset. Le résultat de l’opération d’agrégation est conservé dans m_dblSumSales.

Remarque

En fait, l’Assistant attribue des noms sans préfixe hongrois aux membres de données. Par exemple, l’Assistant génère le nom m_Sales pour la colonne Sales à la place du nom m_lSales utilisé précédemment à titre d’illustration.

Si vous utilisez une classe CRecordView pour afficher les données, vous devez modifier l’appel de fonction DDX pour afficher la nouvelle valeur du membre de données, qui ici a changé de :

DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_lSales, m_pSet);

Par :

DDX_FieldText(pDX, IDC_SUMSALES, m_pSet->m_dblSumSales, m_pSet);

Voir aussi

Recordset (ODBC)
Recordset : sélection d’enregistrements par les recordsets (ODBC)