Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Класс CRecordset. Компоненты данных и осн.методы (операции перемещения пo результир-му набору, операции IsFieldDirty, IsFieldNull, Requary, SetFieldDirty, SetFieldNull).




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

1)Компоненты данных. Служат для хранения информации, используемой для непосредственной работы с базой данных, к которой объект этого класса был присоединен.

2)Конструирование. В эту категорию входят конструктор и методы для открытия/закрытия форм БД.

3)Атрибуты результирующего набора. Функции, используемые для получения информации о результирующем наборе, к которому присоединен объект класса CRecordset.

4)Операции обновления результирующего набора. Четыре операции, предназначенные для обработки транзакций.

5)Операции перемещения по результирующему набору. Ф-ции, позволяющие перемещ-ся по записям результирующего набора.

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

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

Компоненты данных

В классе CRecordset определены следующие основные компоненты данных:

 UINT CRecordset::m_nFields

Содержит число полей данных в результирующем наборе — число столбцов, получ-х из источника данных.

(Если воспольз-ся ClassWizard, то это б.сделано автоматически

UINT CRecordset::m_nParams).

CDatabase CRecordset: :m_pDatabase

Содержит ук-ль на объект класса CDatabase, посредством кот-го результирующий набор соединяется с источником данных. CString CRecordset::m_strFilter

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

CString CRecordset::m_strSort

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

Операции перемещения пo результир-му набору

К основным функциям этой категории относятся следующие: Move, MoveFirst, MoveLast, MoveNext и MovePrev.

virtual void CRecordset::Move -- Функция имеет два парам-ра: nRows – кол-во строк, на кот-е необх-мо переместиться вперед («+» знач-е) или назад («-») и wFetchType — опред-т набор строк, которые функция должна выбрать.

void CRecordset::MoveFirst () -- Делает текущей первую запись результирующего набора. Перед использовани­ем данной функции рекомендуется вызвать функцию lsBOF.

void CRecordset::MoveLast () Делает текущей последнюю запись результирующего набора. Перед использованием данной функции рекомендуется вызвать функцию IsEOF.

void CRecordset: :MoveNext () Делает текущей первую запись следующего набора строк. Перед использованием реком-ся вызвать ф-цию IsBOF. Если работа идет не с блоками, а с отдельными записями, то текущей становится след-я запись.

 voidCRecordset::MovePrev ()

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

Другие операции над результирующим набором

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

Void CRecordset::Cancel () 

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

BOOL CRecordset::IsFieldDirty(void*pv)       

Возвращает ненулевое значение, если поле данных было изменено после вызова AddNew или Edit, в противном случае О. Проверяемое поле данных задаете указателем pv, если это значение равно NULL, то проверяются все поля.

BOOL CRecordset::IsFieldNull (void*pv)

Возвращает ненулевое значение, если поле данных отмечено как содержащее значение Null, и 0 – в противном случае. Проверяемое поле данных задается указателем pv, если это значение равно Null, то проверяются все поля.

Virtual BOOL CRecordset::Reguery ()

Позволяет обновить результирующий набор. Функцию следует вызывать для результирующего набора типа «мгновенный снимок» (snapshot) после того, как вы или другой пользователь внесли в него изменения. Для динамического (dynaset) результирующего набора обновление производится автоматически, кроме случая добавление новой записи.                 void CRecordset::SetFieldDirty (void*pv,BOOL bDirty = TRUE)

Позволяет пометить поле данных результирующего набора (парам-р pv) как измененное (bDirty=TRUE) или не изменившееся (bDirty=FALSE). Если в кач-ве pv передается NULL, помечаются все поля. Использование этой функции позволяет снизить трафик SQL, если изменились не все поля записи.

void CRecordset::SetFieldNull (void*pv,BOOL bNull = TRUE)

 Позволяет пометить поле данных результирующего набора (параметр pv) как содержащее (bNull = TRUE) или не содержащее (bNull = FALSE) значение Null. Если в качестве pv передается NULL, помечаются все поля.

 

 

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

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

virtualvoidCRecordset::DoFieldExchange(СFieldExchange*pFx

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

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

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

virtual CString CRecordset::GetDefaultConnect()

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

virtual CString CRecordset::GetDefaultSQL()

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

 

 

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

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

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

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

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

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

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

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

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

CRecordView::CRecordView(LPCSTR lpszTemplateName)

CRecordView::CRecordView(UINT nIDTemplate)

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

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

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

virtual CRecordset*CRecordView::OnGetRecordset()

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

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

CRecordset* CDBView::OnGetRecordset()

{ eturn m_pSet }










Последнее изменение этой страницы: 2018-04-12; просмотров: 296.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...