Класс CDaoRecordView

Представление, которое отображает записи базы данных в элементах управления.

Синтаксис

class AFX_NOVTABLE CDaoRecordView : public CFormView

Участники

Защищенные конструкторы

Имя Описание
CDaoRecordView::CDaoRecordView Формирует объект CDaoRecordView.

Открытые методы

Имя Описание
CDaoRecordView::IsOnFirstRecord Возвращает ненулевое значение, если текущая запись является первой записью в связанном наборе записей.
CDaoRecordView::IsOnLastRecord Возвращает ненулевое значение, если текущая запись является последней записью в связанном наборе записей.
CDaoRecordView::OnGetRecordset Возвращает указатель на объект класса, производный от CDaoRecordset. ClassWizard переопределяет эту функцию и создает набор записей при необходимости.
CDaoRecordView::OnMove Если текущая запись изменилась, обновите ее в источнике данных, перейдите к указанной записи (следующей, предыдущей, первой или последней).

Замечания

Представление представляет собой представление формы, непосредственно подключенное к объекту CDaoRecordset . Представление создается из ресурса шаблона диалогового окна и отображает поля объекта в элементах управления диалогового CDaoRecordset окна. Объект CDaoRecordView использует обмен данными диалоговых окон (DDX) и обмен полями записей DAO (DFX) для автоматизации перемещения данных между элементами управления в форме и полями набора записей. CDaoRecordView также предоставляет реализацию по умолчанию для перехода на первую, следующую, предыдущую или последнюю запись и интерфейс для обновления записи в настоящее время.

Примечание.

Классы базы данных DAO отличаются от классов баз данных MFC на основе Подключение тивности открытой базы данных (ODBC). Все имена классов базы данных DAO имеют префикс CDao. Вы по-прежнему можете получить доступ к источникам данных ODBC с помощью классов DAO; Классы DAO обычно предлагают превосходные возможности, так как они используют ядро СУБД Microsoft Jet.

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

Если вам просто нужна одна форма, подход мастера приложений проще. ClassWizard позволяет использовать представление записей позже в процессе разработки. Если вы не создаете класс представления записей с помощью мастера приложений, его можно создать позже с помощью ClassWizard. Использование ClassWizard для создания представления записей и набора записей отдельно, а затем подключения к ним является наиболее гибким подходом, так как он обеспечивает более широкий контроль при именовании класса записей и его. H/. Файлы CPP. Этот подход также позволяет использовать несколько представлений записей в одном классе наборов записей.

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

Сведения о реализации по умолчанию для перехода из записи в запись см. в IsOnLastRecord статье IsOnFirstRecord "Использование представления записей", которая относится к обоим CRecordView иCDaoRecordView.

CDaoRecordView отслеживает положение пользователя в наборе записей, чтобы представление записей могли обновлять пользовательский интерфейс. Когда пользователь переходит в любой конец набора записей, представление записей отключает объекты пользовательского интерфейса, такие как элементы меню или кнопки панели инструментов, для дальнейшего перемещения в том же направлении.

Дополнительные сведения об объявлении и использовании представлений записей и классов наборов записей см. в разделе "Проектирование и создание представления записей" статьи "Представления записей". Дополнительные сведения о работе представлений записей и их использовании см. в статье "Использование представления записей". Все статьи, упоминание приведенные выше, применяются к обоим CRecordView иCDaoRecordView.

Иерархия наследования

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CDaoRecordView

Требования

Header: afxdao.h

CDaoRecordView::CDaoRecordView

При создании объекта типа, производного от CDaoRecordView, вызовите любую форму конструктора, чтобы инициализировать объект представления и определить ресурс диалога, на котором основано представление.

explicit CDaoRecordView(LPCTSTR lpszTemplateName);
explicit CDaoRecordView(UINT nIDTemplate);

Параметры

lpszTemplateName
Содержит строку, завершающую значение NULL, которая является именем ресурса шаблона диалогового окна.

nIDTemplate
Содержит идентификатор ресурса шаблона диалогового окна.

Замечания

Вы можете определить ресурс по имени (передать строку в качестве аргумента конструктору) или по идентификатору (передать целое число без знака в качестве аргумента). Рекомендуется использовать идентификатор ресурса.

Примечание.

Производный класс должен предоставить собственный конструктор. В конструкторе производного класса вызовите конструктор CDaoRecordView::CDaoRecordView с именем ресурса или идентификатором в качестве аргумента.

CDaoRecordView::OnInitialUpdate вызовы CWnd::UpdateData, которые вызывают CWnd::DoDataExchange. Этот первоначальный вызов для DoDataExchange подключения CDaoRecordView элементов управления (косвенно) к CDaoRecordset элементам данных поля, созданным ClassWizard. Эти элементы данных нельзя использовать до тех пор, пока не вызовете функцию-член базового класса CFormView::OnInitialUpdate .

Примечание.

При использовании ClassWizard мастер определяет enum значение CDaoRecordView::IDD в объявлении класса и использует его в списке инициализации элементов для конструктора.

CMyDaoRecordView::CMyDaoRecordView()
    : CDaoRecordView(CMyDaoRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here
}

CDaoRecordView::IsOnFirstRecord

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

BOOL IsOnFirstRecord();

Возвращаемое значение

Ненулевое значение, если текущая запись является первой записью в наборе записей; в противном случае — 0.

Замечания

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

Если пользователь переходит к первой записи, платформа отключает любые объекты пользовательского интерфейса (например, элементы меню или кнопки панели инструментов) для перехода на первую или предыдущую запись.

CDaoRecordView::IsOnLastRecord

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

BOOL IsOnLastRecord();

Возвращаемое значение

Ненулевое значение, если текущая запись является последней записью в наборе записей; в противном случае — 0.

Замечания

Эта функция полезна для написания собственных реализаций обработчиков обновления команд по умолчанию, которые КлассWizard записывает для поддержки пользовательского интерфейса для перехода из записи в запись.

Внимание

Результат этой функции является надежным, за исключением того, что представление может не обнаруживать конец набора записей, пока пользователь не переместился мимо него. Пользователю может потребоваться перейти за рамки последней записи, прежде чем представление записи может сообщить, что он должен отключить любые объекты пользовательского интерфейса для перехода к следующей или последней записи. Если пользователь перемещается мимо последней записи, а затем возвращается к последней записи (или перед ней), представление записи может отслеживать положение пользователя в наборе записей и отключать объекты пользовательского интерфейса правильно.

CDaoRecordView::OnGetRecordset

Возвращает указатель на производный CDaoRecordsetобъект, связанный с представлением записи.

virtual CDaoRecordset* OnGetRecordset() = 0;

Возвращаемое значение

Указатель на производный CDaoRecordsetобъект, если объект был успешно создан; в противном случае — указатель NULL.

Замечания

Эту функцию-член необходимо переопределить для создания или получения объекта набора записей и возврата указателя на него. Если вы объявляете класс представления записей с помощью ClassWizard, мастер записывает для вас переопределение по умолчанию. Реализация classWizard по умолчанию возвращает указатель набора записей, хранящийся в представлении записей, если он существует. Если нет, он создает объект набора записей типа, указанного в ClassWizard, и вызывает ее Open функцию-член, чтобы открыть таблицу или запустить запрос, а затем возвращает указатель на объект.

Дополнительные сведения и примеры см. в статье "Представления записей: использование представления записей".

CDaoRecordView::OnMove

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

virtual BOOL OnMove(UINT nIDMoveCommand);

Параметры

nIDMoveCommand
Одно из следующих стандартных значений идентификатора команды:

  • ID_RECORD_FIRST Перейти к первой записи в наборе записей.

  • ID_RECORD_LAST Перейти к последней записи в наборе записей.

  • ID_RECORD_NEXT Перейти к следующей записи в наборе записей.

  • ID_RECORD_PREV Перейти к предыдущей записи в наборе записей.

Возвращаемое значение

Ненулевое значение, если перемещение выполнено успешно; в противном случае значение 0, если запрос на перемещение был отклонен.

Замечания

Реализация по умолчанию вызывает соответствующую функцию элемента Move объекта, связанного CDaoRecordset с представлением записи.

По умолчанию обновляет текущую запись в источнике данных, OnMove если пользователь изменил его в представлении записи.

Мастер приложений создает ресурс меню с элементами меню "Первая запись", "Последняя запись", "Следующая запись" и "Предыдущая запись". Если выбрать параметр начальной панели инструментов, мастер приложений также создает панель инструментов с кнопками, соответствующими этим командам.

Если вы перемещаете последнюю запись в наборе записей, представление записей продолжает отображать последнюю запись. При перемещении назад после первой записи представление записи продолжает отображать первую запись.

Внимание

Вызов OnMove вызывает исключение, если набор записей не содержит записей. Вызовите соответствующую функцию обработчика обновления пользовательского интерфейса — OnUpdateRecordFirst, OnUpdateRecordLastOnUpdateRecordNextили OnUpdateRecordPrev перед соответствующей операцией перемещения, чтобы определить, имеет ли набор записей какие-либо записи.

См. также

Класс CFormView
Диаграмма иерархии
Класс CDaoRecordset
Класс CDaoTableDef
Класс CDaoQueryDef
Класс CDaoDatabase
Класс CDaoWorkspace
Класс CFormView