Набор записей. Фильтрация записей (ODBC)

Этот раздел относится к классам ODBC библиотеки MFC.

В этом разделе объясняется, как отфильтровать набор записей, чтобы выбрать только определенное подмножество доступных записей. Например, можно выбрать только разделы класса для определенного курса, например MATH101. Фильтр — это условие поиска, определенное содержимым предложения SQL WHERE . Когда платформа добавляет ее к инструкции SQL набора записей, предложение WHERE ограничивает выделение.

Необходимо установить фильтр объекта набора записей после создания объекта, но перед вызовом его Open функции-члена (или перед вызовом Requery функции-члена для существующего объекта набора записей, Open функция-член которой была вызвана ранее).

Указание фильтра для объекта набора записей

  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. Этот синтаксис также рассматривается далее в конце этого раздела.

  3. Задайте любые другие необходимые параметры, такие как порядок сортировки, режим блокировки или параметры. Указание параметра особенно полезно. Сведения о параметризации фильтра см. в разделе 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, но для некоторых СУБД могут потребоваться другие символы кавычки. Дополнительные сведения см. в статье SQL: настройка инструкции SQL набора записей (ODBC).

Примечание.

Если вы решили переопределить строку SQL набора записей по умолчанию, передав собственную строку OpenSQL, не следует задавать фильтр, если пользовательская строка имеет предложение WHERE . Дополнительные сведения о переопределении SQL по умолчанию см. в статье SQL: настройка инструкции SQL набора записей (ODBC).

См. также

Набор записей (ODBC)
Набор записей. Сортировка записей (ODBC)
Набор записей. Порядок выборки записей в наборе (ODBC)
Набор записей. Порядок обновления записей в наборе (ODBC)
Набор записей. Блокировка (ODBC)