CDaoRecordset::Open

виртуальные void Open (int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, int nOptions= 0 );
броска (CDaoException, CMemoryException);

виртуальные void Open (CDaoTableDef *pTableDef,int nOpenType = dbOpenTable, int nOptions= 0 );
броска (CDaoException, CMemoryException);

виртуальные void Open (CDaoQueryDef *pQueryDef,int nOpenType = dbOpenDynaset, int nOptions= 0 );
броска (CDaoException, CMemoryException);

Параметры

nOpenType

Одно из следующих значений:

lpszSQL

Указателем на строку с одним из следующих действий.:

nOptions

Один или несколько из перечисленных ниже вариантов. Значение по умолчанию равно 0. Возможные значения:

pTableDef

 Указатель на объект CDaoTableDef . Эта версия является действительно только для записей типа table. При использовании этого параметра, CDaoDatabase указатель, используемый для построения CDaoRecordset не используется; скорее используется база данных, в которой находится tabledef.

pQueryDef

Указатель на объект CDaoQueryDef . Эта версия является действительно только для динамического и статического типа записей. При использовании этого параметра, CDaoDatabase указатель, используемый для построения CDaoRecordset не используется; скорее используется база данных, в которой находится querydef.

Примечания

Необходимо вызвать эту функцию-член для извлечения записей для набора записей. Прежде чем предоставить открытым, необходимо создать объект набора записей. Существует несколько способов это сделать:

Для версии Открыть использование параметра lpszSQL после открытия набора записей вы можете получить записи в один из нескольких способов. Первый вариант заключается в том, чтобы иметь DFX функции в вашем DoFieldExcha&nge. Вторым вариантом является использование динамического связывания путем вызова функции-члена GetFieldValue . Эти параметры могут осуществляться отдельно или в сочетании. Если они комбинируются, будут должны пройти в инструкции SQL себя на вызове открытым. Для получения дополнительных сведений о динамической привязке, см. статью записей DAO: Связывание записей динамически в Visual C++ программист справочник.nbsp;

При использовании вторая версия открытого где передается в объекте CDaoTableDef , результирующие столбцы будут доступны для вас, чтобы связать через механизм DFX и DoFieldExchange и/или динамически связывать через GetFieldValue.

Примечание   Можно вызвать только открытые с помощью объекта CDaoTableDef для типа table наборов записей.

При использовании третьей версии открытых где передается в CDaoQueryDef объекте, что запрос будет выполнен, и результирующие столбцы будут доступны для вас для bind через DoFieldExchange и DFX механизм, и/или динамически связывать через GetFieldValue.

Примечание   Можно вызвать только открытые с помощью объекта CDaoQueryDef для динамического и статического типа записей.

Для первой версии открытых использование параметра lpszSQL отбираются записи, основанные на критериях, указанных в следующей таблице.

Значение параметра lpszSQL Выбранных записей, определяется Пример
ЗНАЧЕНИЕ NULL Строка, возвращаемая GetDefaultSQL.
Список одного или нескольких tabledefs и/или querydef имена. Все столбцы, представленные в DoFieldExchange.
«Клиента»
- Выберите список столбцов из таблицы лист Указанные столбцы из указанным tabledef(s) или querydef(s).
"Выбрать CustId, CustName
ОТ клиента»

Обычная процедура является передать NULL открытым; в этом случае открытый называет GetDefaultSQL, функция переопределения члена, создающий ClassWizard при создании CDaoRecordset-производного класса. Это значение дает tabledef(s) и/или querydef имена, указанные в ClassWizard. Вместо этого можно указать другие сведения в параметре lpszSQL.

Все, что вы проходите, открытый создает окончательную строку SQL для запроса (строка может иметьBY предложения SQL где и порядок, добавится к строке lpszSQL вы прошли), а затем выполняет запрос. Вы можете изучить построенной строки путем вызова GetSQL после вызова открытый .

Члены данных полей класса набора записей привязаны к столбцам данных, выбранных. Если возвращаются все записи, первая запись становится текущей записи.

Если вы хотите задать параметры для набора записей, таких как фильтра или сортировки, набора m_strSort или m_strFilter после вы создайте объект набора записей, но прежде чем вызывать открытым. Для обновления записей в наборе записей, после того, как набор записей уже открыт, вызовите Requery.

Если открытый динамического или статического типа записей, или если источник данных ссылается на инструкцию SQL или tabledef, который представляет прилагаемую таблицу, dbOpenTable нельзя использовать для аргумента типа; Если вы это сделаете, MFC создает исключение. Чтобы определить, представляет ли объект tabledef прилагаемую таблицу, создайте объект CDaoTableDef и вызовите его функцию-член GetConnect.

Используйте флаг dbSeeChanges , если вы хотите выполнить треппинг изменения, сделанные другим пользователем или другой программы на вашем компьютере при редактировании или удалении той же записи. Например если два пользователя начать редактирование ту же запись, первого пользователя для вызова функции-члена Update выполняется успешно. Когда обновление является вторым пользователем, вызывается CDaoException . Аналогично если второй пользователь пытается вызвать Удалить , чтобы удалить запись, и он уже был изменен первый пользователь, CDaoException происходит.

Как правило если пользователь получает этот CDaoException при обновлении, код должен обновить содержимое полей и получать недавно измененные значения. Если исключение происходит по мере удаления, ваш код может отображать новые данные записи для пользователя и сообщение, указывающее, недавно измененные данные. На данный момент ваш код может запросить подтверждение, что пользователь по-прежнему хочет удалить запись.

Подсказка Использование только прокрутки вариант (dbForwardOnly) для повышения производительности, когда ваше приложение делает один проход через набор записей из источника данных ODBC.

Для получения дополнительных сведений об открытии набора записей, обратитесь к статьям записей DAO: наборы записей, создание и Дао: создание, открытие и закрытие объектов DAO в Руководстве по Visual C++ программист. Соответствующую информацию в разделе «Метод OpenRecordset» в справке DAO.

Обзор CDaoRecordsetЧлены класса | Иерархическая схема

См. также CDaoRecordset::Close, CDaoRecordset::CDaoRecordset

Index