- В появившемся окне Database Options (Опции базы данных) выбрать источник данных Students и щелкнуть на OK.
- В появившемся окне Select Database Tables (Выбор таблицы базы данных) выбрать таблицу Students и щелкнуть на OK. Снова на экране окно этапа 2. Щелкнуть на кнопке Next.
- 3-ий этап – щелкнуть на кнопке Next, 4-ый этап – сбросить флажок опции Printing and print и щелкнуть на Next, 5-ый этап - щелкнуть на Next, 6-ой этап – щелкнуть на кнопке Finish.
- Появляется окно New Project Information, в котором представлены характеристики создаваемого приложения. Щелкнуть на ОК. Появится окно Developer Studio с открытым проектом.
Для реализации операции просмотра базы данных требуется выполнить этапы создания формы документа для отображения содержимого записей базы данных:
- Выбрать вкладку ResourceView, открыть папку Lab11 Resources и ,затем, папку Dialog. Щелкнуть дважды на идентификаторе диалогового окна IDD_LAB11_FORM. Открывается диалоговое окно в редакторе ресурсов.
- Выделить строку «TODO: ...» и удалить ее, нажав <Del>.
- Добавить в диалоговое окно два текстовых поля (поля записи) со статическими надписями Name и Grade, а также надпись-заголовок Students согласно спроектированной экранной форме документа.
- Теперь необходимо связать текстовые поля с переменными-элементами класса CLab11Set, производного от класса CRecordSet, для организации обмена данными между текстовыми полями и источником данных. Выбрать команду View>Class-Wizard и щелкнуть на вкладке Member Variable.
- Выбрать ресурс IDC_EDIT1и щелкнуть на кнопке Add Variable. Появляется окно Add Member Variable.
- Выбрать в раскрывающемся списке Member Variable Name значение m_pSet->m_Name и щелкнуть на OK.
- Аналогично связать поле IDC_EDIT2 с переменной m_pSet->m_Grade. Щелкнуть на OK в окне ClassWizard.
- Скомпилировать и запустить приложение. Выполнить операцию просмотра базы данных с помощью пиктограмм на панели инструментов или опций меню Record First Record, Previous Record, Next Record, Last Record. Можно изменить содержимое любого из двух полей базы данных, набрав новые данные и перейдя к другой записи.
Для реализации операций добавления и удаления записей базы данных необходимо сначала добавить в приложение команды Add Record и Delete Record:
- Выбрать вкладку ResourceView, открыть папку Menu и щелкнуть дважды на меню IDR_MAINFRAME. Появится окно редактора меню.
- Открыть меню Record и щелкнуть на нижней пустой команде. Выполнить команду View->Properties. Появится окно Menu Item Properties.
- Ввести в поле ID значение ID_RECORD_ADD, в поле Caption - &Add Record.
- Аналогично ввести в следующую пустую позицию команду удаления, т.е. в поле ID – ID_RECORD_DELETE, а в поле Caption - &Delete Record.
Затем, необходимо создать заготовки функций-обработчиков для выполнения команд добавления и удаления записей:
- Выбрать команду View->ClassWizard и щелкнуть на вкладке Message Maps.
- Выбрать в списке Class Name значение CLab11View, а в списке Object IDs – идентификатор команды добавления ID_RECORD_ADD. Затем щелкнуть дважды на COMMAND в списке Messages. Появится окно Add Member Function.
- Щелкнуть на OK, приняв по умолчанию имя функции OnRecordAdd.
- Аналогично создать заготовку функции-обработчика для команды удаления ID_RECORD_DELETE. По умолчанию имя функции – OnRecordDelete.
Теперь необходимо написать текст функций-обработчиков команд добавления и удаления записей:
- Объявить булевскую переменную-флажок для фиксации добавления записи (TRUE) или перемещения к следующей записи (FALSE). Для этого в окне ClassView щелкнуть дважды на CLab11View и в открывшемся файле Lab11View.h добавить в класс переменную:
protected:
BOOL m_bAdding;
- Инициализировать переменную. Для этого в окне ClassView щелкнуть дважды на конструкторе класса CLab11View и вставить в конец конструктора:
m_bAdding=FALSE;
- Добавить текст функции OnRecordAdd():
void CLab11View::OnRecordAdd()
{
m_pSet->AddNew(); //формирование пустой записи
m_bAddig=TRUE; //признак добавления записи
UpdateData(FALSE); //отображение пустой записи
}
- Переопределить функцию OnMove() в классе CLab11View. В окне ClassView щелкнуть правой кнопкой мыши на CLab11View и выбрать в контекстном меню команду Add Virtual Function. В появившемся окне выбрать функцию OnMove() и щелкнуть на кнопке Add and Edit.
- Добавить текст функции OnMove():
BOOL CLab11View::OnMove(UNIT nIDMoveCommand)
{ //вызывается при переходе к другой записи
if (m_bAdding) //если TRUE, то добавление записи
{
m_bAdding=FALSE; //сброс флажка
UpdateData(TRUE); //передача данных из полей в буфер записи
if (m_pSet->CanUpdate()) //проверка возможности обновления базы
m_pSet->Update(); //добавление новой записи к источнику данных
m_pSet->Requery(); //формирование новой выборки данных
UpdateData(FALSE); //передача данных из буфера записи в поля
return TRUE;
}
else //m_bAdding==FALSE и обычный переход на следующую запись
return CRecordView::OnMove(nIDMoveCommand);
}
- Добавить текст функции OnRecordDelete():
void CLab11View::OnRecordDelete()
{
m_pSet->Delete(); //удаление записи
m_pSet->MoveNext(); //переход к отображению следующей записи
if (m_pSet->IsEOF()) //проверка конца последовательности записей
m_pSet->MoveLast(); //при TRUE - указатель на последнюю запись
if (m_pSet->IsBOF()) //проверка на единственную запись
m_pSet->SetFieldNull(NULL);//при TRUE– устан. полей в NULL
UpdateData(FALSE); //обновление содержания окна представления
}
Откомпилировать и запустить приложение. Для добавления записи щелкнуть на команде Record->Add Record. Появится пустая запись. Ввести данные новой записи и щелкнуть на команде перехода к другой записи. Новая запись запишется в базу данных. Для удаления записи щелкнуть на команде Record->Delete Record. Текущая запись исчезнет с экрана и появится другая запись базы данных.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.