Ревунков Г.И. - Методические указания к лабораторному практикуму по курсу «Базы данных», страница 21
Описание файла
Документ из архива "Ревунков Г.И. - Методические указания к лабораторному практикуму по курсу «Базы данных» ", который расположен в категории "". Всё это находится в предмете "базы данных" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "базы данных" в общих файлах.
Онлайн просмотр документа "Ревунков Г.И. - Методические указания к лабораторному практикуму по курсу «Базы данных»"
Текст 21 страницы из документа "Ревунков Г.И. - Методические указания к лабораторному практикуму по курсу «Базы данных»"
Для этого необходимо выполнить следующие действия:
• Активизируйте на форме компонент DBGrid1 (соответствующий таблице Book).
• Вызовите редактор столбцов компонента DBGrid1. Для этого вызовите контекстное меню компонента DBGrid1 (щелкнув правой кнопкой) и выполните опцию Columns Editor.
• Явно определите столбцы. Для этого щелкните на панели инструментов кнопку Add All Fields.
• Активизируйте в списке в окне редактора имя соответствующего столбца.
• Перейдите в окно инспектора объектов. Раскройте список свойств Title. В списке измените значение свойства Caption - введите новое русское название столбца - рис.4.21. Повторите последние действия с остальными столбцами.
Рис. 4.21. Изменение названий столбцов настройкой компонента DBGrid
Сравните исходный текст программы в первром и во втором случае. Запустите программу на выполнение.
Пример 4.8. Под столбцами "Индекс", "Название книги", "Автор" и "Год издания" таблицы "Книги" установите редакционные окна, которые бы отображали содержимое текущей строки и при необходимости позволяли бы редактировать данные.
Используем в качестве таких окон компонент DBEdit co страницы Data Controls палитры компонентов. В нашем примере перенесем на форму четыре таких компонента: TDBEdit1, TDBEdit2, TDBEdit3, TDBEdit4.
Для каждого компонета установите значения свойств:
DataField имя поля: ID - для столбца "Индекс", Name - для столбца " Название книги ", Author - для столбца "Автор", Yеar - для столбца "Год издания".
DataSource DataSource1 (в нашем примере с талицей Book связан компонент DataSource1).
Проверьте значение свойства ReadOnly. По умолчанию оно должно иметь значение False. В противном случае поля редактирования будут доступны только в режиме чиения.
Запустите программу. Внешний вид формы приведен на рис. 4.22. Выполните ввод данных. Переход между окнами компонентов TDBEdit с помощью клавиши Tab.
Рис. 4.22. Введение в форму компонентов TDBEdit.
Пример 4.9. Под столбцом "Индекс издательства" таблицы "Книги" установите выпадающий список для выбора кода издательства и окно с названием выбранного издательства.
Используем компонент DBText для вывода названия выбранного издательства и компонент DBLookupComboBox для реализации выпадающего списка (рис. 4.23).
Рис.4.23. Использование компонентов DBText и DBLookupComboBox.
Для компонента DBText установите соответствующие таблице Publishers значения свойств DataField и DataSource , поскольку из этой таблицы должны браться данные:
DataField Name_Р;
DataSource DataSource2 (в нашем примере с талицей Publishers связан компонент DataSource2).
Для компонента DBLookupComboBox установите следующие значения свойств DataField, DataSource, KeyField, ListField и ListSource:
DataField ID_P;
DataSource DataSource1;
KeyField ID_P;
ListField Name_P;
ListSource DataSource2.
DataField и DataSource определяют главное соединение. ListSource - задает вторичный источник данных, KeyField - поле во вторичном источнике, используемое для связи и ListField - поле, в котором находятся отображаемые данные из вторичного источника.
4.1.7. Введение элементов навигации
Пример 4.10. Для таблиц Book и Publishers введите элементы навигации в таблице.
Используем компонент DBNavigator. В нашем примере внесем на форму два таких компонента:ТDBNavigator1 и ТDBNavigator2 и свяжем их с соответствующими источниками данных (свойство DataSource) - рис. 4.24.
Рис. 4.24. Использование компонента DBNavigator
Теперь сделаем собственный навигатор по таблице Publishers (компонент Table2) - вместо компонента DBNavigator добавим группу из четырех кнопок, с помощью которых организуем перемещение по таблице. Группу кнопок расположите над таблицей.
Чтобы кнопки осуществляли навигацию, можно вызывать соответствующие методы компонента Table:
Table2.First,
Table2.Last,
Table2.Next,
Table2.Prior,
написав для каждой кнопки соответсвующий обработчик (см. Часть 2). При этом необходимо учитывать случаи достижения конца или начала набора и запрещать дальнейшие перемещения в этих напрвлениях.
Сделаем кнопку перемещения к первой записи. Перенесите на форму компонент Button. Свойству Caption присвойте значение "К первой". Событию OnClick поставьте в соответствие обработчик (рис.4.25):
procedure TForm1.Button1Click(Sender: TObject);
begin
while not Table2.Bof do
begin
Table2.Prior;
end;
end;
Рис. 4.25. Пример введения кнопок навигации
По аналогии спроектируйте остальные кнопки.
4.1.8. Введение элементов управления редактированием данных
Используя методы компонента Table:
• Table2.Insert (компонент Table2 в наших примерах соответствует таблице Publishers),
• Table2.Edit,
• Table2.Delete,
• Table2.Post (метод переносит в таблицу БД текущее состояние записи),
• Table2.Cancel (метод отменяет сделанные изменения),
можно ввести в форму кнопки, с помощью которых будет осуществляться управление редактированием данных в наборе.
Набор данных (в нашем случае таблица Publishers) может находиться в различных состояниях, которые определяются в свойстве State. Это свойство может принимать следующие значеня:
• dsBrowse - набор находится в режиме просмотра;
• dsEdit - набор находится в режиме редактирования; набор переходит в этот режим, если в компоненте DataSource свойство AutoEdit имеет значение True и пользователь работает с данными в компонентах DBEdit или DBGrid; либо когда в программе вызывается метод Edit; когда сделанные в записи изменения отсылаются (Post), набор из этого режима выходит и переходит в режим просмотра;
• dsInsert - набор находится в режиме добавления новой записи;
• dsInactuve - набор находится в режиме закрытого состояния;
• dsSetKey - набор находится в режиме подготовки к поиску данных; это состояние наступает после вызова метода SetKey , но до вызова метода GotoKey или GotoNearest;
• dsCalcFields - набор находится в режиме расчета полей; состояние наступает после вызова обработчика события OnCalcFieids;
• dsFilter - набор находится в режиме установки фильтра; состояние наступает после вызова обработчика события OnFilterRecord;
• dsNewValue, dsCurValue, ds0ldValue - набор находится в режиме обновления кеш-памяти.
В обычных случаях переходы между этими состояниями Delphi обрабатывает автоматически. Если требуется, то для смены состояний можно, например, использовать событие OnStateChange компонента DataSource или использовать обработчик события OnClick компонента Button. Например, обработчик для кнопки включения записи:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Table2.State = dsBrowse then
Table2.Insert;
end;
Можно также обрабатывать для кнопок свойство Enable. Когда свойство имеет значение False, компонент неактивен и при выполнении программы представляется невыделенным - т.е. в сером цвете. Либо можно присвоить свойству Visible значение False (используется соответствующий метод Hide), тогда компонент станет невидим.Чаще используют первый способ.
4.1.9. Использование компонента Query
В компоненте Query используется язык работы с реляционными базами данных - SQL. BDE имеет встроенный интерпретатор с этого языка.
Данные, сформированные по запросу SELECT, помещаются во временную локальную таблицу и компонент Query становится ее владельцем. Данные из этой таблицы через компонент DataSource могут быть переданы визуальным компонентам для дальнейшей обработки точно также, как и в случае компонента Table. Однако, в отличии от компонента Table эти данные нельзя изменять. Для изменения данных формируются специальные запросы UPDATE, INSERT, DELETE.
SQL-запросы можно программировать либо непосредственно, либо используя SQLB (SQL Builder) - специальный построитель SQL-запросов, встроенный в Delphi.
Пример 4.11. По данным таблиц Book и Publishers реализуйте следующий SQL-запрос:
SELECT B.ID, B.Name, B.Author, P.Name_P, P.Telephone_P
FROM Book B, Publishers P
WHERE B.ID_P=P.ID_P
ORDER BY B.Author
Откройте новое приложение. Перенесите на форму компоненты Query (страница Data Access), DataSource (страница Data Access), DBGrid (страница Data Controls).
У компонента Query1 свойству DatabaseName установите значение Catalogue_B(в нашем примере)
У компонента DataSource1 свойству DataSet установите значение Query1.
У компонента DBGrid свойству DataSource установите значение DataSource1.
Снова перейдите к компоненту Query1 и откройте редактор у свойства SQL двойным щелчком. В открывшемся окне String List editor редактора наберите исходный текст оператора SELECT из условия примера. По концу набора нажмите щелкните ОК.
Для выполнения запроса у компонента Query1 свойству Active установите значение True.
На рис. 4.26 скомпанованы основныме моменты использования компонента Query.
Рис. 4.26. Использования компонента Query
4.2. Использование технологии ADO.
В рамках технологии АDO на сервере размещается источник данных и устанавливается провайдер данных, а на клиенте - компоненты ADO: ADOConnection (связной компонент), ADOTable, ADOQuery, ADOStoredProc, не требующие установки на клиенте механизма BDE.
Для случая файл-серверных систем в роли провайдера выступает Microsoft OLE DB Provider for ODBC drivers, а отдельные таблицы должны управляться соответствующим ODBC-драйвером.
Связь с провайдером устанавливается с помощью связного компонента ADOConnection либо минуя его с помощью свойства ConnectionString компонента-набора-данных.
Пример 4.12. Создайте базу данных katalog.mdb СУБД MS ACCESS 97, состоящую из двух связных таблиц - рис.4.27, и отобразите ее в Delphi, используя средства технолгии ADO.
Рис. 4.27. База данных "katalog.mdb" СУБД MS ACCESS 97
Запустите Delphi и создайте модуль данных (зачастую модули данных используют для создания форм, представляющих одни и теже данные разными способами): выполните опции File | New, выберите закладку NEW, активизируйте Data Module и щелкните ОК. На экране появится окно конструктора модуля данных - Data Module1. Поместите в это окно на вкладку Components компоненты ADOConnection, ADOTable - два, DataSource - два. из палитры компонентов (рис. 4.28).
Рис. 4.28. Создание модуля данных
Теперь необходимо настроить драйвер ODBC. Откройте окно панели управления Windows: Пуск | Программы | Панель управления и запустите на выполнение ODBC Data Source (32 bit). На экране раскроется диалоговое окно ODBC Data Source Administrator (рис. 4.29).Если эта программа у Вас отсутствует, то ее необходимо установить.
Рис. 4.29. диалоговое окно ODBC Data Source Administrator
В этом окне в списке User Data Sources активизируйте строку MS Access 97 и щелкните кнопку Configure. На экране появится окно установок ODBC Microsoft Access Setup. Используя кнопку Select Directory укажите базу данных (рис. 4.30) и кнопками ОК закройте окна настройки драйвера. Закройте окно панели управления.
Рис. 4.30. Окно ODBC Microsoft Access Setup
Далее настраивается связь объекто ADO с провайдером. Активизируйте компонент ADOConnection1 и в окне инспектора объектов у свойства Connection String раскройте кнопкой окно формирования значения. На экране появится окно настройки связи - рис. 4.31.
Рис. 4.31. Окно CustomerData.ADOConnection1 Connection String
Щелкните по кнопке Build и в открывшемся окне Data Link Properties на вкладке выбора провайдера Provider выберите Microsoft OLE Provider for ODBC Drivers - рис. 4.32.
Рис. 4.32. Выбор провайдера
В этом же окне перейдите на вкладку Connection и в списке Use data source name установите тип данных MS Access 97 Database - рис. 4.33.Нажмите кнопки ОК.
Рис. 4.33. Установка типа данных
Активизируйте компонент ADOTable1. Свойству Connection установите значение ADOConnection1 , а свойству TableName - значение Издательства (выбрав из списка).
Активизируйте компонент ADOTable2. Свойству Connection установите значение ADOConnection1 , а свойству TableName - значение Книги (выбрав из списка).
Активизируйте компонент DataSource1. Свойству DataSet установите значение ADOTable1.
Активизируйте компонент DataSource2. Свойству DataSet установите значение ADOTable2.
Снова активизируйте дочернюю таблицу (Книги) - ADOTable2. Свойству MasterSource установите значение DataSource1. У свойств MasterFields щелкните по кнопке раскрытия окна выбора значения. Раскроется окно Field Link Designer.Активизируйте слева и справа поле связи "код_издательства" (рис. 4.34) и установите связь, щелкнув кнопки ADD и ОК.
Рис. 4.34. Установление связи
Теперь в окне конструктора модуля данных откройте вкладку Data Diagram и из левого окна на вкладку с помощью мыши перетащите компоненты ADOTable1 и ADOTable2. На вкладке отобразилась установленная связь (рис. 4.35).