Скачиваний:
55
Добавлен:
01.04.2014
Размер:
960 Кб
Скачать

45. Класс cRecordset. Переопределяемые методы (DoFieldExchange, GetDefoltSql, GetDefoltConnect).

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

virtualvoidCRecordset::DoFieldExchangeFieldExchange*pFx

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

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

Собственно обмен данными осуществляется с помощью механизма RFX (Record Field Exchange, Обмен полями записи), который работает в обоих направления от полей данных результирующего набора к записям источника данных и наоборот.

virtual CString CRecordset::GetDefaultConnect()

Библиотека MFC вызывает данную функцию, чтобы получить строку, содержащую источник данных, на котором базируется результирующий нaбop.

virtual CString CRecordset::GetDefaultSQL()

Библиотека MFC вызывает эту функцию, чтобы получить строку, содержащую оператор SQL, на кот-м базируется результир-й набор. Это должно быть или имя таблицы, или непосредственно оператор SELECT. Можно также определить здесь вызов предопределенного запроса, используя оператор CALL.

46.Класс cRecordView.

Осн.методы (конструктор, OnGetRecordSet, OnMove).

CWnd-> CView->CScrollView->CFormView->CRecordView

Объекты этого класса предоставляют для изображения записей БД в элементах управл-я форму, кот-я непосредственно соед-на с объектом CRecordset. Объекты CRecordView исп-т мех-м DDX (Dialog Data Exchange, Обмен данными с блоком диалога) и RFX (Record Field Exchange, Обмен полями записей) для автомат-го перемещения данных м/у элем-ми упр-я формы и полями результир-го набора. Кроме того, м.восп-ся реализованными возм-ми перемещ-я по записям и обновления текущей записи.

Вce компон-ты и методы этого класса м.разбить на три категории:

1)Создание объекта.

Имеется только конструктор для создания объекта.

2)Атрибуты данных.

Три функции, используемые для получения информации результирующем наборе, к которому присоединена форма.

3)Операции.

Единственная функция, позволяющая программисту изменить указатель на текущую запись.

1)Создание объекта

В эту категорию входит только констр-р, имеющий две реализации.

CRecordView::CRecordView(LPCSTR lpszTemplateName)

CRecordView::CRecordView(UINT nIDTemplate)

Создает объект класса. В кач-ве парам-ра конструктор принимает идентификатор шаблона блока диалога, задаваемый либо строкой (lpszTemplateName), либо номером (nlDTemplate), При создании класса, производного от CRecordView, в нем можно определить только один конструктор, в котором необходимо вызвать конструктор базового класса CRecordView::CRecordView с идентификатором ресурса в качестве параметра.

2)Атрибуты данных

Функции этой категории позволяют получить информацию о представлении записи

virtual CRecordset*CRecordView::OnGetRecordset()

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

Фрагмент кода (AppWizard):

CRecordset* CDBView::OnGetRecordset()

{ eturn m_pSet }

BOOL CRecordView::IsOnFirstRecord( )

Позволяет определить, является ли текущая запись первой в результирующем наборе, ассоциированном с данной формой. BOOL CRecordView::IsOnLastRecord( )

Позволяет определить, является ли текущая запись последней в результирующем наборе, ассоциированном с данной формой. 3)Операции

Имеется единственная функция, позволяющая программисту перемещаться по записям результирующего набора.

virtual BOOL CRecordView::OnMove(UINT nIDMoveCommand)

Позволяет изменять указ-ль на текущую запись (перемещаться no записям результирующего набора и отображать его поля в элементах управления формы).

Параметр nIDMoveCommand задает направление перемещения:

ID_RECORD_FiRST переход к первой строке в результир-м наборе

ID_RECORD_LAST переход к посл-й строке в результир-м наборе

ID_RECORD_NEXT переход к след-й строке в результир-м наборе

ID_RECORD_PREV переход к пред-й строке в результир-м наборе

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