Набор записей. Фильтрация записей (ODBC)
Данный раздел относится к классам ODBC библиотеки MFC.
В этом разделе рассматривается метод фильтрации набора записей, который позволяет выбрать конкретное число подмножеств из доступных записей.К примеру, можно выбрать уроки для класса определенного курса, например MATH101.Фильтр является условием поиска, которое определяется содержимым предложения SQL WHERE.Когда платформа присоединяет фильтр к инструкции SQL набора записей предложение WHERE ограничивает выбор.
Установите фильтр для объекта набора записей после создания объекта, но перед вызовом функции-члена Open (или перед вызовом функции-члена Requery для существующего объекта набора записей, в котором функция-член Open вызывалась ранее).
Задание фильтра для объекта набора записей
Создайте новый объект набора записей (или вызовите Requery существующего объекта).
Присвойте значение члену данных m_strFilter объекта.
Фильтр — это строка с завершающим нулем, которая содержит содержимое предложения SQL WHERE, но не ключевое слово WHERE.Например, используйте:
m_pSet->m_strFilter = "CourseID = 'MATH101'";
not
m_pSet->m_strFilter = "WHERE CourseID = 'MATH101'";
Примечание В вышеуказанном примере приведен строковый литерал "MATH101" с одинарными кавычками.В спецификации ODBC SQL одинарные кавычки используются для обозначения символа строкового литерала.В данной ситуации необходимо проверить требования СУБД относительно кавычек в стандартах документации ODBC.Далее в конце раздела рассматривается вопросы, связанные синтаксисом.
Установите другие нужные параметры, например режим сортировки, блокировки или параметры.Особенно полезно указать конкретный параметр.Дополнительные сведения о параметризации фильтра см. в разделе Набор записей: параметризация набора записей (ODBC).
Вызовите 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 набора записей, заданную по умолчанию, с помощью передачи собственной строки SQL в Open не нужно устанавливать фильтр, если настраиваемая строка имеет предложение WHERE.Дополнительные сведения о переопределении SQL по умолчанию см. в разделе SQL: настройка инструкции SQL набора записей (ODBC). |
См. также
Основные понятия
Набор записей. Сортировка записей (ODBC)
Набор записей. Порядок выборки записей в наборе (ODBC)