Partilhar via


Conjunto de registros: obtendo SUMs e outros resultados agregados (ODBC)

Observação

O Assistente de consumidor ODBC do MFC não está disponível no Visual Studio 2019 e posterior. É possível criar um consumidor manualmente.

Este tópico aplica-se às classes ODBC do MFC.

Este tópico explica como obter resultados agregados usando as seguintes palavras-chave SQL:

  • SUM calcula o total dos valores em uma coluna com um tipo de dados numérico.

  • MIN extrai o menor valor em uma coluna com um tipo de dados numérico.

  • MAX extrai o maior valor em uma coluna com um tipo de dados numérico.

  • AVG calcula um valor médio de todos os valores em uma coluna com um tipo de dados numérico.

  • COUNT conta o número de registros em uma coluna de qualquer tipo de dados.

Use essas funções SQL para obter informações estatísticas sobre os registros em uma fonte de dados, em vez de extrair registros da fonte de dados. O conjunto de registros criado normalmente é composto de um único registro (se todas as colunas forem agregações) que contém um valor. (Pode haver mais de um registro se você usou uma cláusula GROUP BY). Esse valor é o resultado do cálculo ou da extração que a função SQL executou.

Dica

Para adicionar uma cláusula GROUP BY SQL (e, possivelmente, uma cláusula HAVING) à instrução SQL, acrescente-a ao final de m_strFilter. Por exemplo:

m_strFilter = "sales > 10 GROUP BY SALESPERSON_ID";

É possível limitar o número de registros usados para obter resultados agregados por meio da filtragem e da classificação das colunas.

Cuidado

Alguns operadores de agregação retornam um tipo de dados diferente das colunas nas quais eles estão agregando.

  • SUM e AVG podem retornar o próximo tipo de dados maior (por exemplo, chamar com int retorna LONG ou double).

  • COUNT geralmente retorna LONG, independentemente do tipo de coluna de destino.

  • MAX e MIN retornam o mesmo tipo de dados que as colunas que calculam.

    Por exemplo, o assistente Adicionar Classe cria long m_lSales para acomodar uma coluna Vendas, mas é necessário substituir isso por um membro de dados double m_dblSumSales para acomodar o resultado da agregação. Veja o exemplo a seguir.

Para obter um resultado de agregação para um conjunto de registros

  1. Crie um conjunto de registros conforme descrito em Como adicionar um consumidor ODBC do MFC que contém as colunas das quais você deseja obter resultados agregados.

  2. Modifique a função DoFieldExchange para o conjunto de registros. Substitua a cadeia de caracteres que representa o nome da coluna (o segundo argumento das chamadas de função RFX) por uma cadeia de caracteres que representa a função de agregação na coluna. Por exemplo, substitua:

    RFX_Long(pFX, "Sales", m_lSales);
    

    por:

    RFX_Double(pFX, "Sum(Sales)", m_dblSumSales)
    
  3. Abrir o conjunto de registros. O resultado da operação de agregação é deixado no m_dblSumSales.

Observação

Na verdade, o assistente atribui os nomes de membro de dados sem prefixos húngaros. Por exemplo, o assistente produziria m_Sales para uma coluna Vendas, em vez do nome m_lSales usado anteriormente para fins ilustrativos.

Se você estiver usando uma classe CRecordView para exibir os dados, será necessário alterar a chamada de função DDX para exibir o novo valor de membro de dados; nesse caso, alterando-o de:

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

Para:

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

Confira também

Conjunto de registros (ODBC)
Conjunto de registros: como conjuntos de registros selecionam registros (ODBC)