Freigeben über


Recordset: Abrufen von Summen und anderen Aggregatergebnissen (ODBC)

Hinweis

Der MFC-ODBC-Consumer-Assistent ist in Visual Studio 2019 und höher nicht verfügbar. Sie können einen Consumer weiterhin manuell erstellen.

Dieses Thema bezieht sich auf die MFC-ODBC-Klassen.

In diesem Thema wird erläutert, wie Aggregatergebnisse mit den folgenden SQL-Schlüsselwörtern abgerufen werden:

  • SUM: Berechnet die Summe der Werte in einer Spalte mit einem numerischen Datentyp.

  • MIN: Extrahiert den kleinsten Wert aus einer Spalte mit einem numerischen Datentyp.

  • MAX: Extrahiert den größten Wert aus einer Spalte mit einem numerischen Datentyp.

  • AVG: Berechnet den Durchschnittswert aller Werte in einer Spalte mit einem numerischen Datentyp.

  • COUNT: Zählt die Anzahl der Datensätze in einer Spalte mit einem beliebigen Datentyp.

Sie können diese SQL-Funktionen verwenden, um statistische Informationen zu den Datensätzen in einer Datenquelle abzurufen, statt Datensätze aus der Datenquelle zu extrahieren. Das Recordset, das erstellt wird, besteht in der Regel aus einem einzigen Datensatz (wenn alle Spalten Aggregate sind), der einen Wert enthält. (Wenn Sie einen Datensatz verwendet haben, gibt es möglicherweise mehrere Datensätze.GROUP BY-Klausel .) Dieser Wert ist das Ergebnis der Berechnung oder Extraktion, die von der SQL-Funktion ausgeführt wird.

Tipp

Wenn Sie eine GROUP BY-SQL-Klausel (und möglicherweise eine HAVING-Klausel) zu Ihrer SQL-Anweisung hinzufügen möchten, fügen Sie diese am Ende von m_strFilter an. Beispiel:

m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";

Sie können die Anzahl von Datensätzen, aus denen Sie Aggregatergebnisse abrufen, einschränken, indem Sie die Spalten filtern und sortieren.

Achtung

Einige Aggregationsoperatoren geben einen Wert mit einem Datentyp zurück, der sich vom Datentyp der Spalten unterscheidet, über die die Operatoren aggregieren.

  • SUMME und AVG können den nächsten größeren Datentyp zurückgeben (z. B. aufrufen mit int "LONG" oder double").

  • COUNT gibt üblicherweise LONG zurück, unabhängig vom Typ der Zielspalte.

  • MAX und MIN geben den Datentyp zurück, den die Spalte hat, die sie berechnen.

    Der Klasse hinzufügen-Assistent erstellt beispielsweise longm_lSales, um eine Sales-Spalte einzubinden, aber Sie müssen dies durch ein double m_dblSumSales-Datenmember ersetzen, um das aggregierte Ergebnis zu berücksichtigen. Siehe folgendes Beispiel.

So rufen Sie ein aggregiertes Ergebnis für ein Recordset ab

  1. Erstellen Sie gemäß der Beschreibung unter Hinzufügen eines MFC-ODBC-Consumers ein Recordset, das die Spalten enthält, aus denen Sie aggregierte Ergebnisse abrufen möchten.

  2. Ändern Sie die DoFieldExchange-Funktion für das Recordset. Ersetzen Sie die Zeichenfolge, die den Namen der Spalte darstellt (das zweite Argument des RFX-Funktionsaufrufs) durch eine Zeichenfolge, die die Aggregationsfunktion für die Spalte darstellt. Ersetzen Sie beispielsweise:

    RFX_Long(pFX, "Sales", m_lSales);
    

    Durch:

    RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
    
  3. Öffnen Sie das Recordset. Das Ergebnis des Aggregationsvorgangs wird in m_dblSumSales gespeichert.

Hinweis

Der Assistent weist tatsächlich Datenmembernamen ohne ungarische Präfixe zu. Beispielsweise würde der Assistent den Namen m_Sales für eine „Sales“-Spalte anstelle des Namens m_lSales erstellen, der zuvor zur Veranschaulichung verwendet wurde.

Wenn Sie eine CRecordView-Klasse verwenden, um die Daten anzuzeigen, müssen Sie den DDX-Funktionsaufruf so ändern, dass der neue Wert des Datenmembers angezeigt wird. In diesem Fall bedeutet dies eine Änderung von:

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

In:

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

Siehe auch

Recordset (ODBC)
Recordset: Wie Recordsets Datensätze auswählen (ODBC)