Класс CRecordView

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

Синтаксис

class AFX_NOVTABLE CRecordView : public CFormView

Участники

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

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

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

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

Защищенные методы

Имя Описание
CRecordView::OnMove Если текущая запись изменилась, обновите ее в источнике данных, перейдите к указанной записи (следующей, предыдущей, первой или последней).

Замечания

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

Примечание.

Если вы работаете с классами объектов доступа к данным (DAO), а не с классами Open Database Connectivity (ODBC), используйте вместо этого класс CDaoRecordView . Дополнительные сведения см. в статье "Обзор: программирование баз данных".

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

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

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

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

Дополнительные сведения об объявлении и использовании представлений записей и классов наборов записей см. в разделе "Проектирование и создание представления записей" статьи "Представления записей". Дополнительные сведения о работе представлений записей и их использовании см. в статье "Использование представления записей".

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

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CRecordView

Требования

Заголовок: afxdb.h

CRecordView::CRecordView

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

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

Параметры

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

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

Замечания

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

Примечание.

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

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

Примечание.

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

Пример

CMyRecordView::CMyRecordView()
   : CRecordView(CMyRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here

}

CRecordView::IsOnFirstRecord

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

BOOL IsOnFirstRecord();

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

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

Замечания

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

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

CRecordView::IsOnLastRecord

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

BOOL IsOnLastRecord();

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

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

Замечания

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

Внимание

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

CRecordView::OnGetRecordset

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

virtual CRecordset* OnGetRecordset() = 0;

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

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

Замечания

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

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

CRecordView::OnMove

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

virtual BOOL OnMove(UINT nIDMoveCommand);

Параметры

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

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

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

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

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

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

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

Замечания

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

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

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

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

Внимание

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

См. также

Класс CFormView
Диаграмма иерархии
Класс CRecordset
Класс CFormView