Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОТИ - копия.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
8.91 Mб
Скачать

Занятие №30

Создание простейшего ODBC-приложения с помощью AppWizard.

Теперь перейдём к AppWizard и проделаем все шаги для создания приложения баз данных.

Чтобы создать приложение, предназначенной для работы с базой данных (приложение базы данных), нужно выполнить следующее:

  1. Зарегистрировать в системе базу данных, с которой вы предполагаете работать, в качестве источника данных.

  2. Используя AppWizard, создать проект приложения базы данных.

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

Рассмотрим создание приложения на примере.

Создание ODBC-приложения с помощью AppWizard

Первое приложение будет называться MyFirst.

Начнём с запуска AppWizard для создания нового проекта MFC AppWizard (ехе). Назовём проект MyFirst и выполним следующие шаги:

  1. В диалоговом окне MFC AppWizard — Step 1 выберем приложение SDI и поддержкой архитектуры "документ-представление".

  2. В диалоговом окне MFC AppWizard — Step 2 выберем Database View Without File Support. (Опция Database View With File Support нужна только тогда, когда приложение читает и записывает обыкновенные файлы и работает с данными, хранящимися в базе данных.) Когда окно будет выглядеть, как показано на рис. 30.1, следует нажать на Data Source.

  3. В группе Recordset Type выбираем Dynaset. В то время как Snapshot (снимок) предоставляет доступ только к копии данных из базы данных, Dynaset позволяет напрямую обновлять базу данных. В группе Datasource выбираем переключатель ODBC и выбираем в выпадающем списке имя POSTAVKA, как показано на рис. 30.2. Нажимаем на ОК.

  4. AppWizard откроет базу данных для определения её структуры. Полученная информация выводится в виде списка в диалоговом окне Select Database Tables. Несмотря на свой заголовок, список помимо таблиц включает и другие записи, такие как запросы и представления базы данных. Выбираем в списке элемент TOVAR (см. рис. 30.3) и нажимаем на ОК. При появлении окна MFC AppWizard — Step 2 нажимаем на Next.

Замечание. Если в диалоговом окне Select Database Tables выбрать несколько таблиц, AppWizard создаст приложение, использующее SQL для получения декартова произведения всех выбранных таблиц. Результат может запросто содержать поистине огромное количество записей.

Если вы всё же хотите работать с несколькими таблицами, задайте в диалоговом окне Select Database Tables первичную таблицу. После того как AppWizard создаст приложение, добавьте дополнительные классы, порождённые от CRecordSet.

Рис. 30.1 Выбор опций базы данных

Рис. 30.2. Выбор источника данных ODBC

  1. В диалоговых окнах MFC AppWizard — Step 3, Step 4 и Step 5 примем установки по умолчанию. В окне Step 6 (см. рис. 30.4) отметим для себя две особенности. Во-первых, базовым классом класса представления выступает CRecordView. CRecordView является подклассом CFormView, который, в свою очередь, позволяет создавать интерфейс с помощью Dialog Editor, подобно диалоговым приложениям, с которых в книге все начиналось. Во-вторых, четыре класса, обычно включаемые в приложение SDI, дополняются пятым — CMyFirstSet. CMyFirstSet является подклассом CRecordSet; он будет использоваться в качестве прокси для чтения и записи информации в базу данных.

Рис. 30.3 Выбор таблицы базы данных

Рис. 30.4.Классы MyFirst

Нажимаем на Finish, а затем на OK, чтобы AppWizard сгенерировал приложение. Завершив создание файлов, AppWizard запустит Dialog Editor, предоставив нам возможность сконструировать новую форму. Приложения CRecordView строятся ма основе диалогового окна, выступающего в качестве главного окна всего приложения. Главное диалоговое окно будет использоваться в качестве формы для вывода значений полей одной записи базы данных.

Создание формы

Нажмём на Finish, а затем на OK, чтобы AppWizard сгенерировал приложение. Завершив создание файлов, AppWizard запустит Dialog Editor, предоставив вам возможность сконструировать новую форму. Приложения CRecordView строятся ма основе диалогового окна, выступающего в качестве главного окна всего приложения. Главное диалоговое окно будет использоваться в качестве формы для вывода значений полей одной записи базы данных.

Для упрощения работы приложение AppWizard, основанное на классе CRecordView, также включает кнопки панели инструментов и пункты меню, позволяющие передвигаться по базе данных, перемещаясь к следующей, предыдущей, первой и последней записям. При перемещении от записи к записи поля формы обновляются значениями, хранимыми в таблице базы данных. Если в один из элементов управления базой данных ввести новое значение, оно запишется и базу при перемещении к другой записи.

Опять-таки, с целью упрощения каждое приложение CRecordSet имеет хотя бы один класс, порожденный от CRecordSet. Этот класс (генерируемый AppWizard) имеет по одной переменной для каждого поля (или колонки, если хотите) вашей таблицы. Эти прокси-переменные можно увидеть, нажав Ctrl+W для запуска ClassWizard, перейдя на вкладку Member Variables и выбрав из выпадающего списка Class name класс CMyFirstSet.

Каждая переменная класса CMyFirstSet, создаваемая ClassWizard, обычно имеет тип, совпадающий с типом соответствующего поля базы данных. Помимо упомянутых переменных, AppWizard создает набор функций обмена данными, подобных DDX-функциям, используемым в диалоговых окнах, которые служат для передачи информации между элементами управления, применяемыми для вывода информации, и полями баз данных, определенными в классе CRecordSet.

Для создания главной формы MyFirst следует выполнить следующие шаги:

  1. Убедиться, что проект загружен. Откроем в окне Workspace панель. RеsourceViеw и развернём папку Dialogs. Отыщем ресурс IDD_MYFIRST_FORM и дважды щёлкнем на нём, чтобы открыть редактор диалога. Удалим элемент статического текста To Do.

  2. Перетащим и поместим на форму элемент группы (groupbox), растянем его по периметру и установим заголовок в "TOVARY".

  3. Перетащим на форму семь элементов статического текста и расположим их в колонку с левой стороны формы. При помощи инструментов Alignment выровняем элементы и промежутки между ними. Идентификатор каждого из элементов оставим в ID_STATIC, выравнивание текста установим по правому краю и зададим следующие заголовки: "KOD TOVARA", "NAME TOVAR", "CENA", "EI", "STRANA", "STAVKA NDS" и "NALICHIE".

  4. Поместим на форму семь элементов редактирования (рис. 30.5). Изменим идентификаторы полей в соответствии с именами используемых полей базы данных. Нашими идентификаторами должны быть: IDC_KOD_TOV, IDC_TOVAR, IDC_CENA, IDC_EI, IDC_COUNTRY, IDC_STAVKA_NDS, IDC_NAL. Когда форма примет вид, как на рис. 30.5, перейдём к следующему шагу — подключению кода.