виртуальные 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. Возможные значения:
Примечание Константы dbConsistent и dbInconsistent являются взаимоисключающими. Вы можете использовать один или другой, но не оба в данном экземпляре открытого.
pTableDef
Указатель на объект CDaoTableDef . Эта версия является действительно только для записей типа table. При использовании этого параметра, CDaoDatabase указатель, используемый для построения CDaoRecordset не используется; скорее используется база данных, в которой находится tabledef.
pQueryDef
Указатель на объект CDaoQueryDef . Эта версия является действительно только для динамического и статического типа записей. При использовании этого параметра, CDaoDatabase указатель, используемый для построения CDaoRecordset не используется; скорее используется база данных, в которой находится querydef.
Примечания
Необходимо вызвать эту функцию-член для извлечения записей для набора записей. Прежде чем предоставить открытым, необходимо создать объект набора записей. Существует несколько способов это сделать:
Примечание Когда набор записей открывает объект CDaoDatabase , он открывает источник данных с неэксклюзивную доступ.
Для версии Открыть использование параметра 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). |
|
Обычная процедура является передать 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