Partager via


Jeu d'enregistrements : filtrage d'enregistrements (ODBC)

Mise à jour : novembre 2007

Cette rubrique s'applique aux classes ODBC MFC.

La présente rubrique explique comment filtrer un jeu d'enregistrements afin qu'il ne sélectionne qu'un sous-ensemble particulier au sein des enregistrements disponibles. Par exemple, vous pourriez vouloir ne sélectionner que les sections classe d'un cours donné, comme MATH101. Un filtre est une condition de recherche définie par le contenu d'une clause SQL WHERE. Quand l'infrastructure l'ajoute à l'instruction SQL du jeu d'enregistrements, la clause WHERE limite la sélection.

Vous devez établir un filtre d'objet recordset après avoir construit l'objet mais avant d'appeler sa fonction membre Open (ou la fonction membre Requery d'un objet recordset existant dont la fonction membre Open a été appelée préalablement).

Pour définir le filtre d'un objet recordset

  1. Construisez un nouvel objet recordset (ou préparez l'appel de Requery dans le cas d'un objet existant).

  2. Définissez la valeur du membre de données m_strFilter de l'objet.

    Le filtre est une chaîne terminée par le caractère NULL qui contient le contenu de la clause SQL WHERE mais pas le mot clé WHERE. Par exemple, utilisez

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

    et non

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

    La chaîne « MATH101 » est encadrée ci-dessus par des guillemets simples. Dans la spécification SQL ODBC, les guillemets simples sont utilisés pour identifier les littéraux de chaîne. Vérifiez dans la documentation de votre pilote ODBC les utilisations requises par le SGBD en matière de guillemets. Ce point de syntaxe est également traité plus loin dans la présente rubrique.

  3. Définissez les autres options nécessaires, comme l'ordre de tri, le mode de verrouillage ou les paramètres. Il peut être très utile de définir un paramètre. Pour plus d'informations sur le paramétrage d'un filtre, consultez Jeu d'enregistrements : paramétrage d'un jeu d'enregistrements (ODBC).

  4. Appelez la fonction Open pour le nouvel objet (ou Requery pour un objet préalablement ouvert).

Conseil :

L'utilisation de paramètres dans votre filtre constitue pratiquement la méthode la plus efficace pour récupérer des enregistrements.

Conseil :

Les filtres de jeux d'enregistrements sont utiles pour joindre des tables ou utiliser des paramètres liés aux informations fournies ou calculées à l'exécution.

Le jeu d'enregistrements ne sélectionne que les enregistrements qui satisfont aux critères de recherche que vous avez définis. Par exemple, pour définir le filtre sur les cours évoqué ci-dessus (en supposant que la variable strCourseID ait pour valeur « MATH101 »), écrivez le code suivant :

// 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

Le jeu d'enregistrements contient tous les enregistrements des sections classe de MATH101.

Notez comment la chaîne de filtre a été définie dans l'exemple ci-dessus, à l'aide d'une variable chaîne. Il s'agit là d'une utilisation classique. Mais imaginons que vous souhaitiez attribuer la valeur littérale 100 à l'identificateur du cours. Le code suivant montre comment définir correctement la chaîne du filtre à l'aide d'une valeur littérale :

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

Notez l'utilisation des guillemets simples ; si vous définissez directement la chaîne du filtre, celle-ci n'est pas :

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

L'utilisation des guillemets ci-dessus est conforme à la spécification ODBC, mais certains SGBD requièrent d'autres types de guillemets. Pour plus d'informations, consultez SQL : personnalisation de l'instruction SQL du jeu d'enregistrements (ODBC).

Remarque :

Si vous choisissez de substituer la chaîne SQL par défaut du jeu d'enregistrements en passant votre propre chaîne SQL à la fonction Open, vous ne devez pas définir de filtre lorsque votre chaîne personnalisée contient une clause WHERE. Pour plus d'informations sur la substitution de l'instruction SQL par défaut, consultez SQL : personnalisation de l'instruction SQL du jeu d'enregistrements (ODBC).

Voir aussi

Concepts

Jeu d'enregistrements (ODBC)

Jeu d'enregistrements : tri d'enregistrements (ODBC)

Jeu d'enregistrements : sélection d'enregistrements par les jeux d'enregistrements (ODBC)

Jeu d'enregistrements : modification des enregistrements par les jeux d'enregistrements (ODBC)

Jeu d'enregistrements : verrouillage d'enregistrements (ODBC)