русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание связанных курсоров


Дата добавления: 2015-07-09; просмотров: 655; Нарушение авторских прав


Связанные курсоры позволяют определить отношение один ко многим (one-to-many relationship). Например, иногда полезно связать таблицы, например CUSTOMER и ORDERS так, чтобы каждый раз, когда пользователь выбирает имя заказчика, то он видит список заказов связанных с этим заказчиком. Иначе говоря, когда пользователь выбирает запись о заказчике, то он может просматривать только заказы, сделанные этим заказчиком.

Рассмотрим пример программы, которая использует связанные курсоры. Дизайн программы сводится к установке в форму двух экземпляров объектов TTable, двух экземпляров TDataSource и двух экземпляров элементов управления TDBGrid. Далее необходимо присоединить первый набор к таблице CUSTOMER, а второй к таблице ORDERS. Программа в этой стадии имеет вид, приведенный на рис 8.

 

Дизайн программы

Рис.8

 

После выполнения дизайна следует связать таблицу ORDERS с таблицей CUSTOMER так, чтобы были видимы только те заказы, которые связанные с текущей записью в таблице заказчиков. В первой таблице заказчик однозначно идентифицируется своим номером – поле CustNo. Во второй таблице принадлежность заказа определяется также номером заказчика в поле CustNo. Следовательно, таблицы нужно связывать по полю CustNo.Следует заметить, что в обеих таблицах поля могут иметь различное название, но должны быть совместимы по типу. Для этого, чтобы установить связь необходимо выполнить три действия.

· Установить свойство Table2.MasterSource = DataSource1.

· Установить свойство Table2.MasterField = CustNo.

· Установить свойство Table2.IndexName = CustNo.

Второе действие выполняется посредством редактора связей (рис. 9).

 

Общий вид редактора связей

Рис.9

 

В период дизайна и после запуска приложения видно, что обе таблицы связаны вместе, и всякий раз, когда пользователь выполнит перемещение на новую запись в таблице CUSTOMER, в таблице ORDERS будут отображаться только те записи, которые принадлежат соответствующему заказчику.



Связанные курсоры позволяют также определить отношение многие ко многим (mamy-to-many relationship). Для реализации такого отношения связанные таблицы должны содержать комплексные индексы, состоящие из нескольких полей. Причем, поле входящее в состав комплексного индекса может иметь и собственный индекс.

Пример конструирования базы данных

Сформулируем основную концепцию разработки базы данных:

· Справочник должен представлять локальную базу данных, в которой каждая таблица должна соответствовать тематическому разделу справочника.

· Каждая таблица должна иметь одинаковую структуру.

· Таблица должна содержать поисковое и описательное поле.

· Приложение управления базой данных должно обеспечивать просмотр и запись данных.

· В процессе создания базы данных приложение должно обеспечить возможность загрузки ранее подготовленных файлов примеров.

· В процессе работы со справочником должна быть обеспечена защита от случайного повреждения данных.

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

 

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

 

1. Используя утилиту DataBaseDesctop, создайте в формате Paradox таблицы Funct1, Funct2, … Funct(n) соответственно количеству разделов. Структура всех таблиц должна быть одинаковой. Каждая таблица должна иметь содержать поля, приведенные в таблице 1.

 

Таблица 1

  Field Name Type Size Key
FunctName A *
  Description F  

2. Создайте новую папку будущего проекта и сохраните в ней созданные таблицы. Используя команду Alias Manager меню Tools утилиты DataBaseDesctop, создайте временный псевдоним будущей базы данных, например DelphiFunction.

3. В среде Delphi создайте новый проект и сохраните его с уникальным именем в папку, содержащую таблицы базы данных.

4. Выполните дизайн приложения управления базой данных согласно рисунку 10 и таблице 2.

 

Расположение компонентов в форме

Рис.10

Таблица 2

№ п/п Компонент Имя Расположение
TEdit SearchEdit Panel1
TComboBox DbBox Panel1
TSpeedButton EditButton Panel2, Panel1
TDBGrid DBGrid Panel3
TDBNavigator DBNavigator Panel4, Panel3
TDBRichEdit DBRich Panel5
TSpeedButton OpenButton Panel6, Panel5
TSpeedButton SaveButton Panel6, Panel5
TSpeedButton CutButton Panel6, Panel5
TSpeedButton CopyButton Panel6, Panel5
TSpeedButton PasteButton Panel6, Panel5
TSpeedButton DelButton Panel6, Panel5
TSpeedButton FontButton Panel6, Panel5
TTable FTable  
TDataSource DataSource  
TOpenDialog OpenDialog  
TsaveDialog SaveDialog  
TFontDialog FontDialog  

 

5. Присвойте имена элементам управления соответственно именам, приведенным в таблице 2.

6. Выберете в списке свойств объекта FTable свойство DataBaseName и присвойте ему псевдоним Вашей базы данных. Также из списка свойства TableName выберете нужную таблицу, например Funct1.

7. Свяжите объект DataSource с объектом FTable посредством свойства DataSet.

8. Используя свойство DataSourceэлементов управления DBGrid, DBNavigator, DBRich установите связь с объектом DataSource. Также используя свойство DataField компонента DBRichустановите его связь с полем Description таблицы базы данных.

9. Посредством свойства VisibleButtons установите видемыми соответствуюние кнопки навигатора (рис. 16.10).

10. Откройте выбранную таблицу базы данных установив свойство Active объекта FTableв состояние True и настройте компонент DBGrid в соответствии рисунку 16.10. посредством редактора свойства Columns.

11. Закройте выбранную таблицу базы данных путем установки свойства Active в состояние False.

12. Занесите названия всех разделов справочника в поле списка DbBox.

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

 

Итак, переключение режима функционирования приложения свяжем с кнопкой EditButton. Для этого настроим кнопку в режим “залипания”, установив ее свойство AllowAllUp в true, и присвоив свойству GroupIndex значение равное единице. Переключение режимов будет состоять в изменении видимых кнопок навигатора, видимости панели инструментов текстового редактора, а также доступа к поисковому полю. Перед написанием процедуры следует установить свойство Visible Panel6 в состояние false и свойство ReadOnly DBRich в true. Команда переключения режимов будет выглядеть как:

 

{***** Переключение режимов *****}

procedure TReferenceForm.EditButtonClick(Sender: TObject);

Begin

if EditButton.Down = false then

Begin

DBNavigator.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast];

SearchEdit.Enabled := true;

Panel6.Visible := false;

DBRich.ReadOnly := true;



<== предыдущая лекция | следующая лекция ==>
Обновление данных | End else


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.322 сек.