Partager via


Recordset : filtrage d'enregistrements (ODBC)

Cette rubrique s’applique aux classes ODBC MFC.

Cette rubrique explique comment filtrer un jeu d’enregistrements afin qu’il sélectionne uniquement un sous-ensemble particulier des enregistrements disponibles. Par exemple, vous pouvez sélectionner uniquement les sections de classe d’un cours particulier, telles que MATH101. Un filtre est une condition de recherche définie par le contenu d’une clause SQL WHERE . Lorsque l’infrastructure l’ajoute à l’instruction SQL du jeu d’enregistrements, la clause WHERE limite la sélection.

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

Pour spécifier un filtre pour un objet recordset

  1. Construisez un nouvel objet recordset (ou préparez-vous à appeler Requery 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 null qui contient le contenu de la clause SQL WHERE, mais pas l’mot clé WHERE. Par exemple, utilisez :

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

    not

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

    Remarque

    La chaîne littérale « MATH101 » s’affiche avec des guillemets simples ci-dessus. Dans la spécification ODBC SQL, les guillemets simples sont utilisés pour désigner un littéral de chaîne de caractères. Consultez la documentation de votre pilote ODBC pour connaître les exigences de guillemets de votre SGBD dans ce cas. Cette syntaxe est également abordée plus loin à la fin de cette rubrique.

  3. Définissez les autres options dont vous avez besoin, telles que l’ordre de tri, le mode de verrouillage ou les paramètres. La spécification d’un paramètre est particulièrement utile. Pour plus d’informations sur le paramétrage de votre filtre, consultez Recordset : Paramétrage d’un recordset (ODBC).

  4. Appelez Open le nouvel objet (ou Requery pour un objet précédemment ouvert).

Conseil

L’utilisation de paramètres dans votre filtre est potentiellement la méthode la plus efficace pour récupérer des enregistrements.

Conseil

Les filtres recordset sont utiles pour joindre des tables et pour utiliser des paramètres en fonction des informations obtenues ou calculées au moment de l’exécution.

Le jeu d’enregistrements sélectionne uniquement les enregistrements qui répondent à la condition de recherche que vous avez spécifiée. Par exemple, pour spécifier le filtre de cours décrit ci-dessus (en supposant qu’une variable strCourseID est actuellement définie, par exemple, sur « MATH101 »), procédez comme suit :

// 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 des enregistrements pour toutes les sections de classe pour MATH101.

Notez comment la chaîne de filtre a été définie dans l’exemple ci-dessus, à l’aide d’une variable de chaîne. Il s’agit de l’utilisation classique. Toutefois, supposons que vous vouliez spécifier la valeur littérale 100 pour l’ID de cours. Le code suivant montre comment définir correctement la chaîne de filtre avec une valeur littérale :

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

Notez l’utilisation de guillemets simples ; si vous définissez directement la chaîne de filtre, la chaîne de filtre n’est pas :

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

Le guillemet indiqué ci-dessus est conforme à la spécification ODBC, mais certains SGBD peuvent nécessiter d’autres guillemets. Pour plus d’informations, consultez SQL : Personnalisation de l’instruction SQL (ODBC) de votre recordset.

Remarque

Si vous choisissez de remplacer la chaîne SQL par défaut du jeu d’enregistrements en transmettant votre propre chaîne SQL, Openvous ne devez pas définir un filtre si votre chaîne personnalisée a une clause WHERE . Pour plus d’informations sur la substitution du sql par défaut, consultez SQL : Personnalisation de l’instruction SQL (ODBC) de votre recordset.

Voir aussi

Recordset (ODBC)
Recordset : tri d’enregistrements (ODBC)
Recordset : sélection d’enregistrements par les recordsets (ODBC)
Recordset : modification des enregistrements par les recordsets (ODBC)
Recordset : verrouillage d’enregistrements (ODBC)