Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка СУБД MySQL Borland Кузин.doc
Скачиваний:
85
Добавлен:
13.05.2015
Размер:
2.85 Mб
Скачать
    1. Создание простой формы с использованием компонентаDataGrid(форма «Детали»)

Для создания простой формы доступа к данным одной таблицы необходимо создать новую форму (Form2), определить для свойстваCaptionзначение «Детали» и поместить на форму компонентыADODataSet,DataSource,DBGrid,DBNavigator:

Для связи компонента ADODataSet1 с компонентомADOConnection1необходимо в модуль формыUnit2.cppдобавить директиву для включения заголовочного файла главной формы:

В инспекторе объектов для ADODataSet1в поле свойстваConnectionуказать Form1->ADOConnection1, в поле свойстваCommandTextввести текстSQL-команды для выбора всех записей из таблицы «Детали»select * from parts, присвоить свойству Active значениеTrue:

В инспекторе объектов для DataSource1 в поле свойстваDataSetвыбратьADODataSet1:

В инспекторе объектов для DBNavigator1 и DataGrid1 в поле свойстваDataSourceвыбратьDataSource1:

После этого в компоненте DBGrid1в режиме разработки должны появиться данные из таблицыParts:

Для того чтобы какая-либо форма «Детали» отображалась при выборе пункта меню «Детали» необходимо в модуль главной формы добавить директиву для включения заголовочного файла формы #include "Unit2.h", в главной форме в режиме разработки выбрать соответствующий пункт меню и создать обработчик следующего вида:

void __fastcall TMain::N1Click(TObject *Sender)

{

Form2->Show();

}

После запуска приложения после выбора пункта меню «Детали» будет открыта форма Form2. В ней при помощи компонентаDBNavigatorможно перемещать курсор по записям набора данных вперед и назад, вставлять и удалять строки, отменять и фиксировать изменения:

    1. Использование компонентовDbEdit, иDbLookupComboBox. Программный доступ к свойствам и методам компонентаAdoDataSet(форма «Поставщики»)

Для отображения и редактирования данных можно использовать компоненты DBEdit,DBLookupListBoxиDBLookupComboBox, которые находятся на вкладкеDataControls. Так можно разработать форму, в которой элементы данных будут отображаться не в виде таблицы (DataGrid), а будут размещены произвольным удобным пользователю образом. Кроме того, стандартный элемент управленияDBNavigatorтак же не всегда удобен для пользователя, при этом нет возможности изменения внешнего вида кнопок.

Создайте новую форму (Form3), задайте значение свойстваCaptionкак «Поставщики» и поместите на нее компонентыADODataSet,DataSource, задайте свойства компонентов аналогично предыдущей форме. При этом необходимо в модуль формыUnit3.cppдобавить директиву для включения заголовочного файла главной формы.

Значение свойства CommandTextкомпонентаADODataSet1 необходимо определить какselect * from providers.

Поместите на форму компоненты Label(вкладкаStandard) иDBEdit(вкладкаDataControls) и кнопкиButtonкак показано на рисунке:

Свяжите компоненты DBEditс полями набора данныхADODataSet1, задав для них свойстваDataSourceиDataField:

Для реализации механизма навигации по базе создайте обработчики для кнопок:

void __fastcall TForm3::Button1Click(TObject *Sender)

{

ADODataSet1->Prior(); // Переход к следующей записи

}

//--------------------------------------------------------------

void __fastcall TForm3::Button2Click(TObject *Sender)

{

ADODataSet1->Next(); // Переход к предыдущей записи

}

//--------------------------------------------------------------

void __fastcall TForm3::Button3Click(TObject *Sender)

{

ADODataSet1->Post(); // Сохранение изменений

}

//--------------------------------------------------------------

void __fastcall TForm3::Button4Click(TObject *Sender)

{

ADODataSet1->Insert(); // Вставка новой записи

}

//--------------------------------------------------------------

Свяжите форму со вторым пунктом системного меню главной формы. Проверьте работу формы в режимах просмотра, редактирования и добавления данных:

Очевидным недостатком данной формы является недостаточная «дружелюбность» интерфейса. Так, например, в поле «Город поставщика» было бы актуально отображать не номер города, а его имя (из таблицы «Города»), а при редактировании поля предлагать пользователю выбор из имеющихся в таблице «Города» названий городов.

Для решения данной задачи можно воспользоваться компонентом DBLookupComboBox. Данный компонент может быть связан одновременно с двумя источниками данных, один из которых является «основным», а второй содержит значения элемента выпадающего списка.

Поместите на форму еще один компонент ADODataSetиDataSource. Для компонента ADODataSet2 задайте свойство Connection, свойство CommandText (select * from towns), Active (True). Для компонента DataSource2 задайте свойство DataSet (ADODataSet2).

Поместите на форму компонент DBLookupComboBox вместо DBEdit3. Задайте для него следующие свойства:

Свойство

Значение

DataSource

DataSource1

DataField

Town_ID

ListSource

DataSource2

ListField

Town

KeyField

Town_ID

Проверьте работу формы. Теперь вместо номеров городов пользователь оперирует именами городов, что повышает удобство работы и не требует от пользователя знания номеров городов.