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


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