Пример:
|
rsSet.Edit(); // Начало операции изменения записи // теперь можно редактировать поля набора записей - члены класса rsSet.m_dwCITY = "Moscow"; rsSet.m_strName = "Alex"; if( !rsCustSet.Update()) // Завершение операции изменения записи //... |
virtual BOOL Update( );throw( CDBException );
Метод возвращает ненулевое значение, если запись источника данных была успешно обновлена. Если нет измененных полей, то метод возвращает значение 0. Если нет обновляемых записей или изменено более одной записи, то бросается исключение.
void MoveFirst( ); throw( CDBException, CMemory Exception ); void MoveLast( ); throw( CDBException, CMemory Exception ); void MoveNext( ); throw( CDBException, CMemoryException ); void MovePrev( ); throw( CDBException, CMemoryException );
Эти методы позволяют прокручивать набор записей - перемещать указатель текущей записи.
virtual void DoFieldExchange( CFieldExchange* pFX);throw( CDBException );
Этот метод вызывается для автоматического обмена данными между членами класса - полями набора записей (текущей записи) и соответствующими полями текущей записи в источнике данных.
Параметры:
pFX - указатель на объект CFieldExchange.
Если реализована выборка набора записей, состоящего из более чем одной записи, то используется метод DoBulkFieldExchange. Для реализации выборки нескольких записей следует для параметра dwOptions в методе Open установить значение CRecordset::useMultiRowFetch.
Отметим, что метод DoFieldExchange доступен только для объектов производного класса от класса CRecordset. Если набор записей создан непосредственно как объект класса CRecordset, то следует использовать метод GetFieldValue.
Обмен данными с источником данных, называемый RFX-обменом (record field exchange), работает в двух направлениях: из полей объекта набор записей в поля источника данных и обратно.
Обычно для того, чтобы использовать этот метод, достаточно в производном классе для набора записей определить в ClassWizard имена и тип полей данных - членов класса. ClassWizard самостоятельно вставит код переопределяемого метода DoFieldExchange.
Пример:
|
Ц Кода автоматически формируемый ClassWizard void CSet::DoFieldExchange(CFieldExchange* pFX) { //{{AFX_FIELD_MAP(CSet) pFX->SetFieldType(CFieldExchange::outputColumn); RFX_Text(pFX, "Name", m_strName); RFX Int(pFX, "Age", m wAge); //}}AFX FIELD MAP } |
Класс CRecordView
Объект-отображение CRecordView предоставляет средства для просмотра полей базы данных в элементах управления.
Отображение создается на основе шаблона документа, используя элементы управления, добавленные в ресурс шаблона диалога.
Объект CRecordView использует DDX-обмен данными и RFX-обмен данными для реализации обмена между тремя наборами данных: элементами управления, полями набора записей и записями источника данных.
Дополнительно класс CRecordView поддерживает по умолчанию реализацию просмотра набора записей и перехода к первой, последней, следующей и предыдущей записям в текущем отображении.
При использовании для создания шаблона приложения AppWizard автоматически будут созданы ресурсы меню и панели инструментов, содержащей кнопки прокрутки набора записей. При программировании вручную, используя ClassWizard, эти ресурсы надо создавать самостоятельно в редакторе меню и в редакторе битовых изображений.
CRecordView( LPCSTR ipszTemplateName ); CRecordView( UINT nIDTemplate);
Конструктор объекта CRecordView.
Параметры:
