共用方式為


資料錄集:篩選資料錄 (ODBC)

本主題適用於 MFC ODBC 類別。

本主題說明如何篩選記錄集,使其只選取可用記錄的特定子集。 例如,您可能只想選取特定課程的類別區段,例如MATH101。 篩選準則是由 SQL WHERE 子句的內容所定義的搜尋條件。 當架構將它附加至記錄集的 SQL 語句時, WHERE 子句會限制選取範圍。

在建構物件之後,您必須先建立 recordset 物件的篩選,但在呼叫其 Open 成員函式之前(或呼叫成員函式之前呼叫其成員函式的現有 recordset 物件 Open 的成員函式之前 Requery )。

若要指定記錄集物件的篩選

  1. 建構新的記錄集物件(或準備呼叫 Requery 現有的物件)。

  2. 設定物件 m_strFilter 資料成員的值。

    篩選準則是 Null 終止的字串,其中包含 SQL WHERE 子句的內容,但不包含關鍵字 WHERE 。 例如,使用:

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

    not

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

    注意

    常值字串 「MATH101」 會以上述單引號顯示。 在 ODBC SQL 規格中,單引號用來表示字元字串常值。 在此情況下,請檢查 ODBC 驅動程式檔,以取得 DBMS 的引用需求。 本主題結尾附近也會進一步討論此語法。

  3. 設定您需要的任何其他選項,例如排序次序、鎖定模式或參數。 指定參數特別有用。 如需參數化篩選的資訊,請參閱 Recordset:將 Recordset 參數化 (ODBC)

  4. 針對新物件呼叫 Open (或 Requery 先前開啟的物件)。

提示

在篩選中使用參數可能是擷取記錄的最有效率的方法。

提示

記錄集篩選可用於 聯結 資料表,以及根據執行時間取得或計算的資訊使用 參數

記錄集只會選取符合您所指定搜尋條件的記錄。 例如,若要指定上述課程篩選準則(假設目前將變數 strCourseID 設定為 「MATH101」),請執行下列動作:

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

記錄集包含MATH101之所有類別區段的記錄。

請注意,使用字串變數,在上述範例中如何設定篩選字串。 這是一般使用方式。 但假設您想要指定課程識別碼的常值 100。 下列程式碼示範如何使用常值正確設定篩選字串:

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

請注意使用單引號字元;如果您直接設定篩選字串,則篩選字串 不是

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

以上所示的引號符合 ODBC 規格,但某些 DBMS 可能需要其他引號字元。 如需詳細資訊,請參閱 SQL:自訂記錄集的 SQL 語句 (ODBC)

注意

如果您選擇將自己的 SQL 字串傳遞至 Open 來覆寫記錄集的預設 SQL 字串,則如果您的自訂字串具有 WHERE 子句,則不應該設定篩選準則。 如需覆寫預設 SQL 的詳細資訊,請參閱 SQL:自訂記錄集的 SQL 語句 (ODBC)。

另請參閱

資料錄集 (ODBC)
資料錄集:排序資料錄 (ODBC)
資料錄集:資料錄集選取資料錄的方式 (ODBC)
資料錄集:資料錄集更新資料錄的方式 (ODBC)
資料錄集:鎖定資料錄 (ODBC)