Compartilhar via


Conjunto de registros: filtrando registros (ODBC)

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

Este tópico explica como filtrar um conjunto de registros para que ele selecione apenas um subconjunto específico dos registros disponíveis. Por exemplo, talvez você queira selecionar apenas as seções de classe para um curso específico, como MATH101. Um filtro é uma condição de pesquisa definida pelo conteúdo de uma cláusula SQL WHERE. Quando a estrutura a acrescenta à instrução SQL do conjunto de registros, a cláusula WHERE restringe a seleção.

Você deve estabelecer o filtro de um objeto de conjunto de registros depois de construir o objeto, mas antes de chamar sua função de membro Open (ou antes de chamar a função membro Requery para um objeto de conjunto de registros existente cuja função membro Open foi chamada anteriormente).

Para especificar um filtro para um objeto de conjunto de registros

  1. Construa um novo objeto de conjunto de registros (ou prepare-se para chamar um objeto Requery existente).

  2. Defina o valor do membro de dados m_strFilter do objeto.

    O filtro é uma cadeia de caracteres terminada em nulo que contém o conteúdo da cláusula SQL WHERE, mas não a palavra-chave WHERE. Por exemplo, use:

    m_pSet->m_strFilter = "CourseID = 'MATH101'";
    

    not

    m_pSet->m_strFilter = "WHERE CourseID = 'MATH101'";
    

    Observação

    A cadeia de caracteres literal "MATH101" é mostrada com aspas simples acima. Na especificação do SQL ODBC, as aspas simples são usadas para indicar um literal de cadeia de caracteres. Verifique a documentação do driver ODBC para obter os requisitos de notação do seu DBMS nessa situação. Essa sintaxe também é discutida próximo do final deste tópico.

  3. Defina as outras opções necessárias, como ordem de classificação, modo de bloqueio ou parâmetros. Especificar um parâmetro é especialmente útil. Para obter informações sobre como parametrizar seu filtro, consulte Recordset: Parametrizando um conjunto de registros (ODBC).

  4. Chame Open para o novo objeto (ou Requery para um objeto aberto anteriormente).

Dica

Usar parâmetros no filtro é potencialmente o método mais eficiente para recuperar registros.

Dica

Filtros de conjunto de registros são úteis para unir tabelas e para usar parâmetros com base nas informações obtidas ou calculadas em tempo de execução.

O conjunto de registros seleciona apenas os registros que atendem à condição de pesquisa especificada. Por exemplo, para especificar o filtro de curso descrito acima (supondo que uma variável strCourseID atualmente definida, por exemplo, como "MATH101"), faça o seguinte:

// Using the recordset pointed to by m_pSet

// Set the filter
m_pSet->m_strFilter = "CourseID = " + strCourseID;

// Run the query with the filter in place
if ( m_pSet->Open( CRecordset::snapshot, NULL, CRecordset::readOnly ) )

// Use the recordset

O conjunto de registros contém registros para todas as seções de classe para MATH101.

Observe como a cadeia de caracteres de filtro foi definida no exemplo acima, usando uma variável de cadeia de caracteres. Esse é o uso típico. Mas suponha que você queira especificar o valor literal 100 para a ID do curso. O código a seguir mostra como definir a cadeia de caracteres de filtro corretamente com um valor literal:

m_strFilter = "StudentID = '100'";   // correct

Observe o uso de caracteres de aspas simples; se você definir a cadeia de caracteres de filtro diretamente, a cadeia de caracteres de filtro não será:

m_strFilter = "StudentID = 100";   // incorrect for some drivers

As aspas mostradas acima estão em conformidade com a especificação ODBC, mas alguns DBMSs podem exigir outros caracteres de aspas. Para obter mais informações, consulte SQL: Personalizando a Instrução SQL (ODBC) do conjunto de registros.

Observação

Se você optar por substituir a cadeia de caracteres SQL padrão do conjunto de registros passando sua própria cadeia de caracteres SQL para Open, não deverá definir um filtro se a cadeia de caracteres personalizada tiver uma cláusula WHERE. Para obter mais informações sobre como substituir o SQL padrão, consulte SQL: Personalizando a instrução SQL do conjunto de registros (ODBC).

Confira também

Conjunto de registros (ODBC)
Conjunto de registros: classificando registros (ODBC)
Conjunto de registros: como conjuntos de registros selecionam registros (ODBC)
Conjunto de registros: como conjuntos de registros atualizam registros (ODBC)
Conjunto de registros: bloqueando registros (ODBC)