Recordset: Filtern von Datensätzen (ODBC)
Dieses Thema bezieht sich auf die MFC-ODBC-Klassen.
In diesem Thema wird erläutert, wie Sie ein Recordset filtern, sodass nur eine bestimmte Teilmenge der verfügbaren Datensätze ausgewählt wird. Sie können z. B. nur die Kursabschnitte für einen bestimmten Kurs auswählen, z. B. MATH101. Ein Filter ist eine Suchbedingung, die durch den Inhalt einer SQL WHERE-Klausel definiert wird. Wenn das Framework sie an die SQL-Anweisung des Recordsets anfüge, schränkt die WHERE-Klausel die Auswahl ein.
Sie müssen den Filter eines Recordsetobjekts nach dem Erstellen des Objekts einrichten, aber bevor Sie die Open
Memberfunktion aufrufen (oder bevor Sie die Requery
Memberfunktion für ein vorhandenes Recordsetobjekt aufrufen, dessen Open
Memberfunktion zuvor aufgerufen wurde).
So geben Sie einen Filter für ein Recordset-Objekt an
Erstellen Eines neuen Recordsetobjekts (oder Vorbereiten des Aufrufs
Requery
für ein vorhandenes Objekt).Legen Sie den Wert des m_strFilter Datenelements des Objekts fest.
Der Filter ist eine mit Null beendete Zeichenfolge, die den Inhalt der SQL WHERE-Klausel enthält, aber nicht die Schlüsselwort (keyword) WHERE. Verwenden Sie z.B. Folgendes:
m_pSet->m_strFilter = "CourseID = 'MATH101'";
not
m_pSet->m_strFilter = "WHERE CourseID = 'MATH101'";
Hinweis
Die Literalzeichenfolge "MATH101" wird mit einfachen Anführungszeichen oben angezeigt. In der ODBC SQL-Spezifikation werden einfache Anführungszeichen verwendet, um ein Zeichenfolgenliteral zu kennzeichnen. Überprüfen Sie ihre ODBC-Treiberdokumentation für die Quoting-Anforderungen Ihres DBMS in dieser Situation. Diese Syntax wird auch am Ende dieses Themas weiter diskutiert.
Legen Sie alle anderen benötigten Optionen fest, z. B. Sortierreihenfolge, Sperrmodus oder Parameter. Die Angabe eines Parameters ist besonders nützlich. Informationen zum Parametrisieren des Filters finden Sie unter Recordset: Parameterizing a Recordset (ODBC).
Aufrufen
Open
des neuen Objekts (oderRequery
für ein zuvor geöffnetes Objekt).
Tipp
Die Verwendung von Parametern in Ihrem Filter ist potenziell die effizienteste Methode zum Abrufen von Datensätzen.
Tipp
Recordset-Filter sind nützlich für das Verknüpfen von Tabellen und für die Verwendung von Parametern basierend auf Informationen, die zur Laufzeit abgerufen oder berechnet werden.
Das Recordset wählt nur die Datensätze aus, die der von Ihnen angegebenen Suchbedingung entsprechen. Gehen Sie beispielsweise wie folgt vor, um den oben beschriebenen Kursfilter anzugeben (vorausgesetzt, eine Variable strCourseID
, die aktuell auf "MATH101" festgelegt ist), gehen Sie folgendermaßen vor:
// 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
Das Recordset enthält Datensätze für alle Klassenabschnitte für MATH101.
Beachten Sie, wie die Filterzeichenfolge im obigen Beispiel mithilfe einer Zeichenfolgenvariable festgelegt wurde. Dies ist die typische Verwendung. Angenommen, Sie wollten den Literalwert 100 für die Kurs-ID angeben. Der folgende Code zeigt, wie die Filterzeichenfolge korrekt mit einem Literalwert festgelegt wird:
m_strFilter = "StudentID = '100'"; // correct
Beachten Sie die Verwendung einzelner Anführungszeichen; Wenn Sie die Filterzeichenfolge direkt festlegen, lautet die Filterzeichenfolge nicht:
m_strFilter = "StudentID = 100"; // incorrect for some drivers
Die oben gezeigte Quotierung entspricht der ODBC-Spezifikation, aber einige DBMSs erfordern möglicherweise andere Anführungszeichen. Weitere Informationen finden Sie unter SQL: Customizing Your Recordset's SQL Statement (ODBC).
Hinweis
Wenn Sie die SQL-Standardzeichenfolge des Recordsets überschreiben möchten, indem Sie ihre eigene SQL-Zeichenfolge Open
übergeben, sollten Sie keinen Filter festlegen, wenn die benutzerdefinierte Zeichenfolge über eine WHERE-Klausel verfügt. Weitere Informationen zum Überschreiben des Standard-SQL finden Sie unter SQL: Customizing Your Recordset's SQL Statement (ODBC).
Siehe auch
Recordset (ODBC)
Recordset: Sortieren von Datensätzen (ODBC)
Recordset: Wie Recordsets Datensätze auswählen (ODBC)
Recordset: Wie Recordsets Datensätze aktualisieren (ODBC)
Recordset: Sperren von Datensätzen (ODBC)