Поделиться через


CDaoRecordset::Open

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

virtual void Open(
   int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
   LPCTSTR lpszSQL = NULL,
   int nOptions = 0 
);
virtual void Open(
   CDaoTableDef* pTableDef,
   int nOpenType = dbOpenTable,
   int nOptions = 0 
);
virtual void Open(
   CDaoQueryDef* pQueryDef,
   int nOpenType = dbOpenDynaset,
   int nOptions = 0 
);

Параметры

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

    • Набор записей является динамическим подмножеством данных- типа dbOpenDynaset a с двухнаправленным скроллингом.Задано по умолчанию.

    • Набор записей пользователем табличный тип dbOpenTable a с двухнаправленным скроллингом.

    • Набор записей является моментальным снимок- типа dbOpenSnapshot a с двухнаправленным скроллингом.

  • lpszSQL
    Указатель строки, содержащей одно из следующих действий:

    • Указатель NULL.

    • Имя одного или нескольких (запятая-, разделенных) tabledefs и/или querydefs.

    • Оператор SELECT SQL (по желанию с SQL WHERE или предложением ORDERBY ).

    • Запрос к серверу.

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

    • dbAppendOnly Можно только добавить новые записи (набор записей является динамическим подмножеством данных- типа).Этот вариант означает буквально, что записи могут быть только добавлены.Классы баз данных MFC ODBC имеют параметры append - только который позволяет добавленные записи, которую требуется извлечь и.

    • dbForwardOnly Набор записей вперед - только при необходимости выполняя прокрутку моментальный снимок.

    • dbSeeChanges Формирует исключение, если другой пользователь изменяет данные, то изменяется.

    • dbDenyWrite Другие пользователи не могут изменять или добавлять записи.

    • dbDenyRead Другие пользователи не может просматривать записи (набор записей пользователем табличный тип).

    • dbReadOnly Можно только просматривать записи; другие пользователи могут изменять их.

    • Обновления dbInconsistent несогласованные разрешены (набор записей является динамическим подмножеством данных- типа).

    • Последовательные обновления dbConsistent только разрешены (набор записей является динамическим подмножеством данных- типа).

    ПримечаниеПримечание

    Константы dbConsistent и dbInconsistent являются взаимоисключающими.Можно использовать одно или другая, но не обе в данном экземпляре Открыть.

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

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

Заметки

Перед вызовом Открыть, необходимо создать объект набора записей.Для этого можно использовать следующие способы.

  • При создании объекта набора записей, передайте указатель объекту CDaoDatabase, который уже открыт.

  • При создании объекта набора записей, передайте указатель объекту CDaoDatabase, не открыт.Набор записей открыт объект CDaoDatabase, но не закрывает его, когда объект набора записей закрыть.

  • При создании объекта набора записей, передайте указатель NULL.Объект набора записей вызывает GetDefaultDBName чтобы получить имя файла Microsoft Access MDB открыть.Набор записей затем открывает объект CDaoDatabase и сохраняет его открыть, если набор записей открыт.При вызове Закрыть в наборе записей, объект CDaoDatabase также закрыть.

    ПримечаниеПримечание

    При открытии набора записей объект CDaoDatabase он открывает источник данных с nonexclusive доступом.

Для версии Открыть, которая использует параметр lpszSQL, что набор записей является открытым записи можно получить одним из нескольких способов.Первый вариант иметь в своем DoFieldExchange функции DFX.Второй параметр использовать динамическую привязку, вызвав функцию-член GetFieldValue.Эти параметры можно реализовать отдельно или в сочетании.Если они объединены, то ее передачи в инструкции SQL на вызове Открыть.

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

ПримечаниеПримечание

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

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

ПримечаниеПримечание

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

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

Значение параметра lpszSQL

Выбранные записи определяются by

Пример

NULL

Строка, возвращаемая GetDefaultSQL.

 

Список с разделителями-запятыми из одного или нескольких tabledefs и/или имен QueryDef.

Все столбцы, представляемые в DoFieldExchange.

"Customer"

Таблица-список FROM столбец-списка SELECT

Указанные столбцы из указанного

"SELECT CustId, CustName

FROM Customer"

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

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

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

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

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

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

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

СоветСовет

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

Дополнительные сведения см. в разделе "метод OpenRecordset" в Справке DAO.

Требования

Header: afxdao.h

См. также

Ссылки

Класс CDaoRecordset

Диаграмма иерархии

CDaoRecordset::Close

CDaoRecordset::CDaoRecordset