WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 5 | 6 || 8 | 9 |   ...   | 14 |

CREATE PROCEDURE upd_workplace (workplace_id INTEGER, class_id INTEGER, workplace_no VARCHAR(20), workplace_name VARCHAR(20), ip_address VARCHAR(20), note VARCHAR(20)) AS BEGIN UPDATE WORKPLACE SET class_id=:class_id, workplace_no=:workplace_no, workplace_name=:workplace_name, ip_address-:ip_address, note=:note WHERE workplace_id=:workplace_id and class_id=:class_id and workplace_no=:workplace_no and workplace_name=:workplace_name and ip_address=:ip_address and - 68- note=:note};

END ! ! SET TERM ; !! SET TERM !! ;

CREATE PROCEDURE del_workplace (ForEachAtt(WORKPLACE, ', ') { } ) AS BEGIN DELETE FROM WORKPLACE WHERE workplace_id=:workplace_id;

END ! ! SET TERM ; !! Для создания БД выполните следующие операции:

• запустите программу windows ISQL;

• выберите пункт меню «File /Create Database...»;

• в диалоге создания базы укажите:

• в поле «Database» - «Е:\COURSE\DATA\course.gdb»;

• В поле «User Name»- «STUDENT»;

• в поле «Password» - «silver» или другой пароль;

в мемо-поле Database Options введите следующую фразу: DEFAULT CHAR- ACTER SET WIN1251;

• нажмите кнопку «ок»;

• выберите пункт меню «File/Run an ISQL Script» и укажите файл с тек- стом сценария.

Если все сделано правильно, после отработки скрипта программа выведет сообщение «Script Completed Successfully» (Скрипт завершен успешно).

2.3. РАЗРАБОТКА ОТЧЕТОВ Для генерации отчетов в ERwin предусмотрена программа - Report Browser (RB). RB создает отчеты путем извлечения выборок по объектам мо- дели и их свойствам. Эти выборки выводятся в виде таблиц, причем содержа- щиеся в ней данные могут различным образом сортироваться и фильтроваться.

- 69- ГЛАВА 3. СОЗДАНИЕ КЛИЕНТСКОГО ПРИЛОЖЕНИЯ ДЛЯ РАБОТЫ С БД После создания БД и ознакомления с основами технологии доступа к данным в Delphi, необходимо разработать программу («клиентское приложение»), которая позволит манипулировать с данными, хранящимися в базе. Клиентское приложение отправляет серверу запрос, выполненный на языке SQL, а сервер производит с данными необходимые манипуляции. При этом клиентское приложение должно выполнять следующие операции:

• Подключение к серверу БД, ввод имени пользователя и пароля;

• Формирование запроса к серверу и получение результатов;

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

• Добавление и удаление данных, навигация по набору данных.

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

Разработчики Delphi заложили модульный принцип разработки клиентских приложений, в соответствии с которым программа делится по «формам» - программным окнам, где каждой форме соответствует свой собственный программный модуль - unit. Но при компиляции и сборке программы все эти модули объединяются в один исполняемый файл. Формы в процессе работы вызываются с разной частотой, но при организации в виде одного исполняемого файла они все равно загружаются в память и занимают в ней место.

В среде Windows можно поместить исполняемый код в библиотеки DLL, которые можно загружать и выгружать во время выполнения, что позволяет строить весьма компактные приложения. При использовании данной технологии каждый диалог можно было бы вынести в отдельный модуль, который будет загружаться только тогда, когда в нем будет необходимость.

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

Последовательность наших действий по созданию пользовательского приложения будет следующей:

• для доступа к данным созданной нами базы данных из программы Delphi, создадим псевдоним этой базы;

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

-70- • создадим объекты, соответствующие объектам БД, а также диалоговые ок- на приложения для манипуляции ими;

• установим связи и взаимные вызовы диалогового окна приложения;

• создадим отчеты по заданным темам.

3.1. СОЗДАНИЕ БАЗЫ ДАННЫХ Выше мы рассмотрели вопросы анализа ПрдО и проектирования БД с по- мощью CASE-средства ERwin. Здесь мы рассмотрим полный цикл создания БД.

При этом кроме ERwin воспользуемся утилитой IBConsole (см. рис. 46), вхо- дящей в состав пакета InterBase и позволяющей выполнять все необходимые операции ПрдО кон- фигурированию серве- ра, созданию и адми- нистрированию БД на сервере, а также за- пускать запросы SQL в интерактивном режи- ме. Окно программы IBConsole состоит из следующих элементов:

•- меню, содержащее команды администри- Рис. 46. Окно программы IBConsole рования сервера;

• панель инструментов, с кнопками быстрого доступа к командам меню;

• окно с деревом, отображающим иерархию серверов и баз данных, зарегист- рированных в IBConsole;

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

• с трока состояния, в которой содержится информация о выбранном сервере и пользователе, а также подсказки меню.

3.1.1. СОЗДАНИЕ «КОНТЕЙНЕРА» БАЗЫ ДАННЫХ Серверная БД - это «набор» объектов (данные, триггеры и т.д.), которые хранят в файле. Этот «пустой» файл мы и будем интерпретировать как контей- нер» БД.

1. Создайте папку для хранения базы данных. Пусть это будет Е: \COURSE\ DATA.

2. Запустите утилиту IBConsole (Пуск/InterBase/IBConsole).

3. Выделите мышью Local Server, как показано на рис. 47.

- 4. Используя Server\Login, зарегистри- руйтесь как администратор под именем SYSDBA и паро- лем masterkey 5. Выберите команду Da- tabase\Create Database (рис. рис. 49).

6. Для новой БД необхо- димо указать ее псевдоним.

Введите в поле Alias псев- доним, с которым вы хотели бы ассоциировать создаваемую БД. Этот псевдоним служит для идентификации БД внутри сервера InterBase и не связан с псевдонимом BDE.

7. В поле File (s) введите имя файла базы данных, включая полный путь.

8. Для работы с символами национальной кодировки установите значение Default Charaсter Set ПОЛЯ Options равным WIN1251.

9. Завершите работу, щелкнув мышью на кнопке ОК.

Рис. 49. Описание БД -72- Как только БД будет создана, IBConsole добавит псевдоним к дереву «сервер/базы данных», как показано на рис. 48. Теперь можно создавать таб- лицы БД. Поскольку это BDE-ориентированное приложение, то предварительно необходимо создать алиас для БД COURSE. GDB.

3.1.2. СОЗДАНИЕ ПСЕВДОНИМА ДЛЯ СЕРВЕРНОЙ БД Для того чтобы можно было обращаться к данным созданной нами базы данных из программы Delphi, необходимо, прежде всего, создать псевдоним этой базы с помощью программы BDE Administrator.

1. Выберите в главном меню следующий пункт «Пуск\Программы\Вог1апсDelphi 5\BDE Administrator».

2. Выберите команду «Object\New».

3. В выпадающем списке выберите тип драйвера БД - InterBase и ок. В окне альясов появиться новый алиас INTERBASEI. Наберите вместо наименования по умолчанию другое наименование «TEACHER» (рис. 50).

Рис. 50. Окно программы BDE Administrator 4. В правой части окна BDE Administrator находится таблица с параметрами настройки. Для привязки создаваемого приложения к вашей БД введите в этой - 73- таблице следующие изменения.

LANGDRIVER - Pdox ANSI Cyrilic;

SERVERNAME - d: \ib\courses. qdb (диск на ваше усмотрение).

USERNAME - STUDENT.

5. Для сохранения нового псевдонима выберите в меню пункт «Object\Apply».

6. Закройте программу BDE Administrator.

3.1.3. СОЗДАНИЕ SQL-СЦЕНАРИЯ И ОБЪЕКТОВ БАЗЫ ДАННЫХ 1. Проведите анализ вашей предметной области, выявите в ней все сущности и установите между ними необходимые связи.

2. С полученной концептуальной схемой выполните все действия, описанные в главе 2.

3. После выполнения всех предписанных действий (построения сущностей, доменов, таблиц, установление связей между таблицами, генераторов, тригге- ров И хранимых процедур) Выберите В ERwin пункт Меню Task\Forward Engi- neer\Schema Generation....

4. В открывшемся окне InterBase Schema Generation нажмите кнопку Preview и ознакомьтесь с SQL-сценарием создания вашей БД в окне InterBase Schema Generation Preview.

5. После ознакомления с текстом SQL-сценария закройте окно InterBase Schema Generation Preview. В окне InterBase Schema Generation нажмите кнопку Report. В открывшемся диалоге Generate InterBase\SQL Schema Report выберите диск, необходимую папку, присвойте имя файлу SQL- сценария и нажмите ОК. Файл с SQL-сценарием будет сохранен.

6. В полученном сценарии проведите некоторые исправления:

6.1. Проследите за тем, чтобы запросы CREATE PROCEDURE, CREATE TRIG- GER были обрамлены командами SET TERM. Дело в том, что точка с запятой '; ' для утилиты InteractiveSQL означает конец оператора, а каждый оператор, заключенный в разделители, должен быть выполнен. Чтобы этого не произош- ло в момент создания триггера или хранимой процедуры, команда SET TERM !! ;

назначает разделителем операторов ' ! ! ' взамен '; '. Новый разделитель не инициирует выполнения операторов в запросах создания триггеров и хранимых процедур. После завершения оператора CREATE PROCEDURE или CREAT E T RIGGER производится обратная установка SET TERM ; ! !. Ваша задача - проследить, чтобы эти команды были на месте, а если они отсутствуют - вставьте их вруч- ную.

6.2. Замените двойные кавычки одинарными.

6.3. Если вы установили связь с БД с помощью IBConsole, а в SQL- сценарии содержится сгенерированный код установки связи CONNECT 'Е:\COURSE\DATA\COURSE.GDB' - 74- USER 'SYSDBA' PASSWORD 'masterkey' вручную удалите этот фрагмент кода.

6.4. Сохраните скорректированный SQL-сценарий.

7. Откройте IBConsole, выделите в дереве Local Server, выберите пункт ме- ню Server\Login и в открывшемся диалоге войдите под своим именем и паро- лем.

8. Выделите в дереве алиас вашей базы с красным крестиком и выберите пункт меню Database\Connect. Связь с контейнером вашей БД установлена.

9. Для создания БД нажмите кнопку InteractiveSQL на панели инструмен- тов. Появляется окно утилиты InteractiveSQL.

10. Выберите пункт меню Query\Load Script и в появившемся диалоге вы- берите файл с SQL-сценарием. Текст выбранного сценария появляется в верх- нем окне утилиты InteractiveSQL.

11. Нажмите кнопку Execute Query на панели инструментов утилиты InteractiveSQL. Если в вашем SQL-сценарии нет ошибок, то ваша БД будет создана. Если же появляется сообщение об ошибке, то вернитесь в текст и ис- правьте ошибки.

Итак, БД для вашего варианта создана, теперь прис тупаем к созданию пользовательского приложения.

3.2. ОБОЛ ОЧКА КЛИЕНТСКОГО ПРИЛОЖЕНИЯ 3.2.1. СОЗДАНИЕ ПРОЕКТНОЙ ГРУППЫ В Delphi существует возможность объединения нескольких проектов в од- ну группу. Создание проектов полезно, например, в том случае, если приложе- ние использует динамически загружаемые библиотеки, разрабатываемые со- вместно с ним. И приложение, и библиотеки DLL являются отдельными проек- тами, поэтому при их совместной разработке логично объединить их в одну группу проектов. Для создания группы проектов выполните следующее:

1. Запустите программу Delphi. Выберите «File\New» и выделите иконку проектной группы (Project Group) и ок. На экране появиться окно Project Manager, содержащее название проектной группы по умолчанию - Project- Groupi. Сохраните проектную группу в новом каталоге COURSE под именем UchebnyProcess. Этот каталог будет главным каталогом нашего проекта.

2. Исполняемый файл проекта будет храниться в главном каталоге COURSE, a под библиотеки DLL создадим отдельные подкаталоги внутри него. Основной проект будем именовать main, а используемые им DLL диалогами dlglib0l, dlglib02,...

-75- 3.2.2. СОЗДАНИЕ МОДУЛЯ uMain 1. Добавьте в группу новый проект, выбрав в командном меню группы пункт «Add new project», а затем в диалоговом окне иконку «Application». Сохра- ните проект в главном каталоге COURSE под именем main, модуль unit1 - под именем uMain (рис. 51).

Рис. 51. Сохранение проекта в главном каталоге 2. Окно main будет основным диалоговым окном нашей программы и должно содержать главное меню разработанной системы. Поместите на форму компо- нент TMainMenu, а для редактирования главного меню выберите в инспекторе свойство Items и щелкните по нему два раза.

Табл. 12. Пункты меню (план и реализация на форме) I ПУНКТ МЕНЮ РАЗДЕЛ МЕНЮ Система ! Связь с сервером...

Учебный Завершить сеанс процесс Выход Группы Студенты группы Кафедры Преподаватели кафедры Предмет и его программа Изучение предмета Успеваемость по предмету Помощь О программе 3. Для создания пункта или раздела меню необходимо выделить «пустой» пункт в редакторе меню и ввести наименование пункта в инспекторе в свойство Caption. Создайте меню с разделами и пунктами, приведенными в табл. 12.

- 76- Разделы меню приложения «Учебный процесс» у нас пока пусты, мы будем добавлять в него пункты по мере разработки приложения. Для улучшения вос- приятия пункты меню могут отделяться разделительной чертой, которая встав- ляется в меню, если вместо наименования пункта внести символ «-».

Рис. 52. Основная форма приложения 4. Кроме меню поместите на форму компонент statusBar и задайте его свой- ство SimplePanel = true. «Оболочка» основной формы нашего приложения будет иметь вид, приведенный на рис. 52.

Это приложение должно быть центром, координирующим работу всех ос- тальных элементов. Кроме координации работы программы, это приложение осуществляет связь с БД, поэтому оно содержит еще и компоненты, осущест- вляющие эту связь.

3.2.3. СОЗДАНИЕ МОДУЛЯ UDM Как нам уже известно, приложения Delphi связываются с серверами БД че- рез «борландовскую машину баз данных» (BDE). Все функции доступа выпол- няются в контексте сессии связи с BDE (одной или нескольких). Так как Delphi является объектно-ориентированной средой разработки, механизм доступа реа- лизован в виде двух компонентов - TSession и TDatabase. Любое приложение, работающее с БД через BDE, всегда содержит хотя бы один компонент TSes- sion, который обладает массивом ссылок на связанный с данной сессией БД, количество которых можно определить ПрдО свойству DatabaseCount.

TSession создается автоматически при инициализации модуля ' DBTables ' сразу после запуска программы. Если в секции 'uses' имеется модуль ' DBTables', в приложении обязательно создается объект TSession, для досту- па к которому в среде Delphi определена переменная Session. Свойство Ses- sionName этого объекта устанавливается равным 'Default'. Пока Session не содержит в списке Databases никаких БД, поэтому его свойство DatabasesCount=0.

-77- Компонент TDatabases появляется при активизации соединения. Допустим, что после запуска программы при нажатии одной из кнопок формы вызывается метод Query.Open. После этого производится проверка, имеется ли БД с име- нем, указанным в свойстве DatabaseName компонента Queryl, если ее нет, то создается новый объект т Database и ссылка на него добавляется в список Databases, в противном случае берется существующий объект TDatabase.

У компонента TDatabase имеется свойство LoginPromt типа boolean, по- казывающее, надо ли выводить стандартный входной диалог:

Если это значение равно true, то после вызова метода Open на экране по- явлется стандартный входной диалог.

Если значение LoginPromt=false, то пользователь должен сам передать в объект TDatabase login и пароль, поместив их в список Params.

По умолчанию объект TDatabase создается только в процессе соединения, поэтому нам необходимо заранее создать свой собственный компонент TDatabase И связать его С TQuery.

Итак, работающая с БД Delphi-программа предс тавляет собой довольно длинную цепочку взаимоувязанных компонент, в основании которой находится список SessionList. Этот список, как мы уже отметили, всегда содержит хотя бы одну сессию. На другом конце цепочки находится какой-нибудь визуальный компонент.

Pages:     | 1 |   ...   | 5 | 6 || 8 | 9 |   ...   | 14 |






















© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.