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

更新:2007 年 11 月

本文件適用於 MFC ODBC 類別。

本主題說明如何篩選資料錄集,以便其僅選取可用資料錄的特定子集。例如,您可能只想要選取一個諸如 MATH101 之特定課程的班級。篩選條件是一個由 SQL WHERE 子句定義的搜尋條件。當架構將它附加至資料錄集的 SQL 陳述式時,WHERE 子句便會限制選取。

您必須在建構資料錄集的物件後,於呼叫其 Open 成員函式前 (對於先前已經呼叫 Open 成員函式之現有資料錄集物件,則是在呼叫 Requery 成員函式前) 先建立資料錄集的篩選條件。

若要指定資料錄集物件的篩選條件

  1. 建構一個新的資料錄集物件 (或準備對一個現有物件呼叫 Requery)。

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

    篩選是 null 結尾字串,包含了 SQL WHERE 子具的內容,但不包含關鍵字 WHERE。例如,使用:

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

    而非

    m_pSet->m_strFilter = "WHERE CourseID = 'MATH101'";
    
    注意事項:

    上述所顯示的常值字串 "MATH101" 有單引號。在 ODBC SQL 規格中,單引號是用來表示一個字元字串常值。如需您的 DBMS 在此情形時的引號需求之詳細資訊,請參閱您的 ODBC 驅動程式文件。這個主題的結尾附近也有進一步討論此語法。

  3. 設定任何您需要的其他選項,例如排序順序、鎖定模式或參數。指定參數尤其有用。如需參數化篩選的詳細資訊,請參閱資料錄集:參數化資料錄集 (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 之班級的資料錄。

請注意上述範例中已經使用字串變數設定了篩選字串。這是一般的用法。但假設您想要將課程 ID 指定為常值 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)