Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМИиП - Лабораторный практикум на Visual C++ 20...doc
Скачиваний:
2
Добавлен:
13.08.2019
Размер:
650.75 Кб
Скачать

Invalidate();

}

}

- Вывести строку :

void ClabServView :: OnDraw (CDC* pDC)

{

ClabServDoc* pDoc = GetDocument();

ASSERT_VALID (pDoc);

if(!pDoc)

return;

pDC -> TextOut(0, 0, pDoc->StringData);

}

В приложении имеются две функции OnDraw(): функция ClabServView::OnDraw() выводит объект на экран при редактировании на месте и при автономном приложении labServ; функция ClabServSrvrItem::OnDraw() выводит на экран неактивный объект.

Компиляция, запуск и тестирование приложения

- Скомпилировать приложение и запустить его на выполнение.

- Проверить алгоритм работы приложения-сервера ActiveX: работу диалогового окна с кнопкой и текстовым полем с выводом строки.

- Вставить в контейнер Contain сервер. Для этого выполнить следующие действия:

Запустить приложение labCont.

Выбрать команду Edit->Insert New Object. Появится диалоговое окно для внедрения или связывания объектов.

Выбрать новый объект labServ и нажать OK. Сервер будет вставлен в контейнер.

Для отмены редактирования на месте нажать Esc.

5.2. Блок по теме «Поддержка баз данных»

labDb «Создание приложения для работы

с базой данных»

Создание приложения для работы с базой данных на основе технологий ODBC или DAO требует выполнения следующих этапов:

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

- Создание заготовки приложения. Этап выполняется автоматически с помощью мастера AppWizard при выполнении этапов настройки приложения с выбором технологии доступа к источнику данных ODBC или DAO.

- Реализация операций с базой данных. Этап выполняется с использованием классов MFC соответствующей технологии доступа к данным.

Цель работы - создание приложения, выполняющего операции с базой данных: просмотр, добавление, удаление.

Воспользуемся файлом db.mdb, который представляет собой базу данных, созданную в СУБД Access. Файл содержит сведения о студентах: Name (Имя), Grade (Курс). Файл можно скачать по адресу ftp://ftp.sybex.com/2120/vcpp.exe. Можно создать собственный файл в любой программе для работы с базами данных.

Пусть экранная форма отображения содержимого базы данных будет выглядеть следующим образом:

Untitled – labDb

File Edit Record View Help

[ ] [ ] [ ] [ ] [|<] [<] [>] [>|]

Студенты:

Имя Ann

Группа B__

Установление доступа к базе данных

Для установления доступа к базе данных, как к источнику данных, выполнить следующие действия:

- Скопировать на диск файл db.mdb. Если создан собственный файл данных, то скопировать его.

- Щелкнуть последовательно Пуск->Панель управления-> Производительность и обслуживание ->Администрирование->Источники данных (ODBC). Последовательность вызовов зависит от версии Windows. Открывается окно Администратор источников данных ODBC.

- Выбрать вкладку Системный DSN и щелкнуть на кнопке Добавить. Появляется окно Создание нового источника данных. Выбрать из списка драйверов Microsoft Access Driver (*.mdb) и щелкнуть на кнопке Готово. Открывается окно Установка драйвера ODBC для Microsoft Access.

- Ввести имя источника данных Stud, а в описание – Im_Gr. Затем щелкнуть на кнопке Выбрать. Появляется окно Выбор базы данных.

- Выбрать файл базы данных db.mdb и щелкнуть на OK. Снова появляется окно Установка драйвера ODBC для Microsoft Access. Щелкнуть на OK. Появляется окно Администратор источников данных ODBC. Щелкнуть на OK и закрыть панель управления.

Итак, установлен доступ к файлу базы данных db.mdb (или к собстенному файлу) с помощью ODBC-драйвера Microsoft Access Driver (.mdb) с использованием имени источника данных Stud.

Создание проекта

Для создания проекта выполнить следующие этапы:

- Запустить Visual Studio 200

53 и в появившейся стартовой странице Start Page щелкнуть на кнопке Create Project. Появится диалоговое окно New Project.

- Выбрать в списке Project Types папку Visual C++ Project MFC, а в списке Templates – MFC Application. Ввести имя проекта labDb и проверить в поле Location имя папки для хранения проекта (labDb). Щелкнуть на кнопке OK. Появляется диалоговое окно MFC Application Wizard - labDb. Генератор приложений AppWizard потребует от пользователя выполнения 7 этапов (шагов) настройки создаваемого приложения.

- На вкладке Application Type выбрать Single Document, язык - английский (США) и Use MFC in static library.

- На вкладке Advanced Features снять флажки Printing and print preview, ActiveX controls, Common Control Manifest.

- На вкладке Database Support выбрать Database view with file support – генерирование базы данных с поддержкой файловых операций. Затем выбрать тип клиента ODBC и щелкнуть на кнопке Data Source. Появится окно Выбор источника данных (Select Data Source). В появившемся окне установить вкладку Источник данных компьютера, выбрать источник данных Stud и щелкнуть на OK. Откроется окно Вход для ввода имени и пароля, которое не заполнять. Щелкнуть на OK. Появится окно Select Database Object (Выбор объекта базы данных). Раскрыть узел Tables (Таблицы), выбрать students и щелкнуть на OK.

- Оставить по умолчанию остальные вкладки (шаги настройки), перейти на вкладку Overview и щелкнуть на кнопке Finish.

- Установить язык Русский. Для этого в окне Resource View открыть папку Dialog и щелкнуть на идентификаторе IDD_LABDb_FORM. В появившемся окне свойств Properties щелкнуть на свойстве Language и в списке справа выбрать значение Русский.

Реализация операции просмотра базы данных

Для реализации операции просмотра базы данных требуется выполнить этапы создания формы документа для отображения содержимого записей базы данных:

- Выбрать вкладку Resource View, открыть папку labDb.rc, затем, - Dialog. Щелкнуть дважды на идентификаторе диалогового окна IDD_LABDB_FORM. Открывается диалоговое окно в редакторе ресурсов. Выделить строку «TODO: ...» и удалить ее, нажав <Delete>.

- Добавить в диалоговое окно два текстовых поля (поля записи) со статическими надписями Name и Grade, а также надпись-заголовок Students согласно спроектированной экранной форме документа. Поля имеют идентификаторы IDC_EDIT1 и IDC_EDIT2.

- Изменить надписи элементов управления. Для этого открыть окно Properties, щелкнув правой кнопкой в свободной области окна. Щелкнуть на надписи поля 1 и ввести в Caption текст Имя. Аналогично ввести надписи Группа и Студенты:.

- Теперь необходимо связать текстовые поля (идентификаторы IDC_EDIT1 и IDC_EDIT2) с элементами- данными m_Name и m_Grade класса ClabDbSet, производного от класса CRecordSet, для организации обмена данными между текстовыми полями и источником данных. Для этого требуется внести следующие изменения.

-- Закомментировать в файле labDbSet.cpp сообщение об ошибке, связанной с использованием пароля, так как файл Microsoft Access не применяет доступ с использованием пароля:

//labDbSet.cpp

//#error Security Issue: …

-- Изменить типы элементов-данных m_Name и m_Grade с CStringW на CString из-за недостаточной надежности работы с типом CStringW:

//labDbSet.h

CString m_Name;

CString m_Grade;

-- Отредактировать функцию обмена данными DoDataExchange() класса представления ClabDbView:

//labDbView.cpp

void ClabDbView::DoDataExchange(CDataExchange* pDX)

{

CRecordView::DoDataExchange(pDX);

// you can insert DDX_Field* functions here to 'connect' your controls

// to the database fields, ex.

DDX_FieldText(pDX, IDC_EDIT1, m_pSet->m_Name, m_pSet);

DDX_FieldText(pDX, IDC_EDIT2, m_pSet->m_Grade, m_pSet);

// See MSDN and ODBC samples for more information

}

- Скомпилировать и запустить приложение. Выполнить операцию просмотра базы данных с помощью пиктограмм на панели инструментов или опций меню Record First Record, Previous Record, Next Record, Last Record. Можно изменить содержимое любого из двух полей базы данных, набрав новые данные и перейдя к другой записи.

Реализация операций добавления и удаления записей

Для реализации операций добавления и удаления записей базы данных необходимо сначала добавить в приложение команды Add Record и Delete Record:

- Выбрать вкладку Resource View, открыть папку Menu и щелкнуть дважды на меню IDR_MAINFRAME. Появится окно редактора меню.

- Открыть меню Record и щелкнуть на нижней пустой команде. Затем ввести Add Record и нажать Enter. Проверить в свойстве Caption значение Add Record, а в свойстве ID – значение ID_RECORD_ ADDRECORD.

- Аналогично ввести в следующую пустую позицию меню команду удаления Delete Record. Проверить в свойстве Caption значение Delete Record, а в свойстве ID – значение ID_RECORD_DELETERECORD.

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

- Открыть окно Class View и щелкнуть правой кнопкой мыши на классе ClabDbView. В появившемся контекстном меню выбрать команду Properties. Появляется окно Properties.

- Щелкнуть на кнопке Events и в появившемся списке идентификаторов раскрыть ID_RECORD_ADDRECORD (щелкнуть на +). Выбрать элемент COMMAND, затем раскрыть список справа и выбрать <Add> OnRecordAddrecord. Заготовка функции OnRecordAddrecord() добавляется в класс ClabDbView.

- Аналогично создать заготовку функции-обработчика OnRecordDeleterecord() для команды удаления.

Теперь необходимо написать тексты функций-обработчиков команд добавления и удаления записей:

- Объявить булевскую переменную-флажок для фиксации добавления записи (TRUE) или перемещения к следующей записи (FALSE). Для этого в окне Class View щелкнуть дважды на ClabDbView и в открывшемся файле labDbView.h добавить в класс переменную:

protected:

BOOL m_Add;

- Инициализировать переменную. Для этого в окне Class View щелкнуть дважды на конструкторе класса ClabDbView и вставить в конец конструктора:

m_Add=FALSE;

- Добавить текст функции OnRecordAddrecord():

void ClabDbView::OnRecordAddrecord()

{

m_pSet->AddNew(); //формирование пустой записи

m_Add=TRUE; //признак добавления записи

UpdateData(FALSE); //отображение пустой записи

}

- Переопределить функцию OnMove() в классе ClabDbView. Необходимо, чтобы функция кроме показа следующей записи сохраняла добавленную запись. В окне ClassView щелкнуть правой кнопкой мыши на ClabDbView и выбрать в контекстном меню команду Properties. В появившемся окне Properties щелкнуть на кнопке Override (Перегрузка), выбрать функцию OnMove() и в списке справа – элемент <Add> OnMove. Появляется заготовка функции OnMove().

- Добавить текст функции OnMove():

BOOL ClabDbView::OnMove(UNIT nIDMoveCommand)

{ //вызывается при переходе к другой записи