50144 (Создание базы данных для организации), страница 3

2016-07-30СтудИзба

Описание файла

Документ из архива "Создание базы данных для организации", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "50144"

Текст 3 страницы из документа "50144"

Опытным путем нетрудно выяснить, что Delphi при работе с InterBase интерпретирует столбцы типа CHAR и VARCHAR как T S t r i n g F i e l d. При этом, во-первых, столбцы типа CHAR всегда читаются без завершающих пробелов, во-вторых, при занесении завершающих пробелов в столбец (а часто это бывает необходимо) типа CHAR они всегда удаляются, в то время как в столбце типа VARCHAR, наоборот, они всегда хранятся. Столбцы типа DATE позволяют хранить значения даты в пределах от 01.01.0100 до 11.12.5941, а также значения времени (тип DATE InterBase полностью совместим с типом TDateTime Delphi). Если ввод данных в столбец типа DATE производится из утилиты IBConsole, значения даты должны указываться в формате InterBase. Согласно этому формату, значения даты состоят из номера дня (01-31), месяца (JAN-DEC) и года. Эти значения отделяются друг от друга разделителями. Стандартным разделителем является символ дефиса (-), но принимаются и пробел, правый слеш (/) и точка (.). Значения дат в InterBase должны лежать в диапазоне от 1-JAN-100 до 11-DEC-5941. Интерпретация формата представления значений типа DATE зависит от настройки — программы или операционной системы компьютера. Полезно всякий раз при старте приложения программно переустанавливать формат даты и времени к привычному нам российскому формату:

procedure TForml.FormCreate(Sender: TObject);

begin

DateSeparator:= '. ';

ShortDateFormat:= 'dd.mm.yyyy';

ShortTimeFormat:= 'hh:mm:ss';

end;

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

В InterBase значения типа DATE совместимы со строковыми типами. Поэтому, если в SQL-операторах InterBase требуется интерпретировать значения типа DATE как строку, нет необходимости в приведении типов. Например, можно так записать в символьный столбец S значение типа DATE (символы I I означают операцию конкатенации, или сцепления, строк, функция NOW возвращает текущие дату и время):

UPDATE DEAL

SET S = "Дата отгрузки " I I NOW;

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

Генератор создается следующим оператором:

CREATE GENERATOR Имя_генератора

После создания генератора ему необходимо присвоить начальное значение таким оператором:

SET GENERATOR Имя_генератора ТО Начальное_значение

Для получения очередного значения генератора используется такая функция:

GEN_ID(Имя_генератора, Шаг)

Здесь Шаг — целое число, на которое изменяется текущее значение генератора. Проиллюстрируем использование генератора на примере поля ID_C таблицы CLIENT.

Создаем генератор:

CREATE GENERATOR GEN_CLIENT_ID_C;

SET GENERATOR GEN_CLIENT_ID_C TO 1;

Однажды созданный генератор хранится в БД наряду с другими ее сущностями — таблицами, индексами, хранимыми процедурами и т. п. Используем генератор при вводе очередной записи:

CREATE TRIGGER TRIG_CLIENT FOR CLIENT

ACTIVE BEFORE INSERT POSITION 0

AS BEGIN

IF (NEW.id_c IS NULL) THEN NEW.id_c = GEN_ID(gen_client_id_c,1);

END

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

CREATE DOMAIN D_GANR AS

VARCHAR(10) CHARACTER SET NONE

NOT NULL

CHECK (VALUE IN ('comedy', 'action', 'melodrama', 'fantasy', 'horror'))

COLLATE NONE

В InterBase нет столбцов денежного типа (Currency). Вместо них обычно используются столбцы FLOAT или DOUBLE PRECISION. При выводе их значений в визуализирующих компонентах они представляют денежные суммы как значения с плавающей запятой, что в большинстве случаев мешает их восприятию. Вернуть этим столбцам нормальный денежный вид можно либо в обработчике события OnGetText объекта-поля, либо с помощью его (объекта-поля) свойства DisplayEdit. В обработчике можно использовать оператор такого вида:

procedure TForml.QUSUMMAGetText(Sender: TField;

var Text: String;

DisplayText: Boolean);

begin

Text:= FloatToStrFfquSumma.AsFloat,

ffCurrency, 10, 2)

end;

В свойстве DisplayEdit можно указать следующую маску:

# # #, # # #. 0 0 ' р. '

Конечный результат будет одинаков, но указать маску, как мне кажется, проще.

Визуальные средства разработки запросов обеспечивают реально удобное представление решаемой задачи, помогают определить связи и условия запроса. Но в Interbase нет как таковых визуальных средств разработки запросов. Однако можно обращаться с Interbase при помощи ibExpert. Это гибкий и мощный инструмент. В нем присутствует возможность разрабатывать структуру самой БД, сохранять и выполнять скрипты на SQL, использовать множество встоенных утилит, облегчающих работу, как разработчика, так и администратора.

Загрузив ibExpert в меню Tools->Query Builder, нужно перетащить требуемые таблицы. Определить связи между ними и отметить поля, необходимые для вывода. Они появятся внизу на вкладке Selection. А на закладке Edit можно будет просмотреть текст запроса. На закладке Perfomance Analisys есть очень полезная информация о быстродействии и количестве чтений с каждой таблицы.

  1. 3.3 Разработка пользовательского интерфейса

Есть два способа добиться хорошего оформления таблиц. Попробовать самостоятельно улучшать стандартный DBGrid или использовать компоненты сторонних производителей, предоставляющих альтернативу стандартному компоненту. При выполнении работы надо учитывать современные тенденции и стандарты, то есть делать так, чтобы программа выглядела современной, похожей на офисные приложения. Используя компоненты от EhLib можно улучшить стандартный DBGrid, добавив новые возможности: автоматический расчет итоговых значений (сумма, среднее значение, количество записей), экспорт данных и т.д.

Устаревший дизайн стандартной таблицы теперь можно легко заменить стильной конструкцией DBGridEh, изменив свойство Flat. Также есть богатый выбор различных цветовых схем выделения данных.

Практически всегда, разрабатывая приложения для работы с базами данных, приходится выделять каким-нибудь образом данные, подпадающие под некоторое условие. Это может быть и уровень продаж определенной менеджера, достигший критически низкого уровня, и «минусовые» остатки на складе. Чтобы не пропустить такие происшествия, программа должна правильно выделять это в таблице. Для этого достаточно прописать в событии OnGetCellParams нужное условие и параметры выделения (размеры, цвет шрифта, цвет фона).

Важнейшим элементом работы с прикладными программами является возможность переноса данных в офисные приложения, например, в Microsoft Office. То есть часто бывает недостаточно просто создать отчет и вывести его в таблицу. Как правило, потом требуется, чтобы он был предоставлен в виде документа Excel для последующих манипуляций. Можно создавать различные OLE – объекты и, перебирая нужные записи в DataSet, копировать их в ячейки Excel. Этот способ довольно гибкий, так как позволяет формулировать качественные отчеты, предварительно оформив их. То есть добавлять заголовки, формулы, делать выделение критических данных и т.д. Но вот копирование по строкам сильно замедляет создание отчета, особенно если данных много. К тому же уйдет много времени на программирование переноса данных. Поэтому когда речь идет не о создании красивого оформления, а о скорости и простоте экспорта данных лучше использовать средства EhLib. Эта библиотека позволяет одним вызовом функции записывать содержимое таблицы в форматы.xls,.rtf,.html,.txt,.csv.

Также полезна функция копирования в буфер выделенных данных. Например, при наличии нескольких офисов, которые в течении дня обмениваются данными о наличии у них количества товара. Менеджерам достаточно скопировать нужные данные и вставить их в любое приложение: почтовый клиент, ICQ.

При работе с большими объемами данных бывает очень удобно не только отсортировывать данные по какому-либо полю, но и группировать («свернуть») по значениям одного из полей, чтобы потом можно было развернуть любую из подгрупп щелчком и просмотреть её содержимое. К примеру, организуя рассылку товаров по множеству городов по неким направлениям, не всегда удобно листать отсортированный по городам массив данных. Удобнее сгруппировать данные по городу и разворачивать города только нужного направления. Используя DropDownBox в DBGridEh, можно легко решать подобные задачи.

Менеджеру будет удобнее просматривать отчёты о продажах используя привычный Excel.(Рис.1) Для начала нужно установить драйвер ODBC Firebird. Запустить Excel. Выбрать меню Данные, Импорт внешних данных, Создать запрос. После проверки запроса необходимо обязательно сохранить запрос (кнопка с изображением дискеты). Запрос будет сохранен вместе со всеми параметрами алиаса, поэтому для "распространения" запроса на несколько компьютеров вовсе необязательно создавать алиас ODBC на каждом (конечно, ODBC-драйвер и клиентскую часть IB/FB все равно придется устанавливать на этих компьютерах).

CREATE PROCEDURE NEW_PROCEDURE

returns (

kld numeric(15,0),

movie varchar(50),

famio varchar(50))

as

declare variable idm integer;

declare variable cl integer;

declare variable dt date;

begin

for select deal.cl_id, deal.d_d, deal.id_m

from deal

into:cl,:dt,:idm

do

begin

kld = current_date - dt;

if (:kld > 12) then

begin

select client.fio from client where client.id_c =:cl

into:famio;

select movie.name_film from movie where movie.id =:idm

into:movie;

suspend;

end

end

end^

Инструкция пользователя

Пользовательский интерфейс построен в соответствии с классическими требованиями и правилами системы Windows, правилами системы Delphi. Основными задачами при построении интерфейса были: простота, удобство.

Программный проект включает в себя 7 оконных форм (одна из них форма главного меню), 4 из них являются непосредственно рабочими (т.е. здесь происходит ввод, обработка и корректирование данных), 3 – формы отображения обработанных данных.

При открытие программы появляется главная форма (fmMain) (Рис. 1), на которой расположены таблицы и соответствующие им элементы управления. Если есть задолжники, у которых на руках находятся диски, то вместе с главной формой появляется дочерняя форма «Задолжники»где можно увидеть наименование диска и данные задолжника и количество дней. Для удобства пользователя главная форма содержит несколько вкладок, где и находятся таблицы. Работать с базой можно как непосредственно из главной формы, так и вызвав отдельное окно из главного меню формы. Так пункт меню «Файл» содержит такие подпункты как «Новое» и «Выход». Сделать новую запись в таблице Клиенты(CLIENT) можно выбрав «Файл» -> «Новое..» -> «Клиент». После чего появится окно «Клиент» (Рис. 2), где пользователю представляется возможность заполнения каждого из предложенного полей. Кнопки «Удалить» и «Исправить» в режиме вставки не активны.

Процесс редактирования данных происходит в том же самом окне, при выборе меню «Правка» -> «Изменить..» -> «Клиент». В этом же окне появляются уведомления пользователя о недопустимых ошибках. В таблице Клиенты(CLIENT) обязательно для заполнения поле ID_C, если пользователь забывает заполнить это поле, программа уведомит его об этом.

Кнопка «Удалить» позволяет удалить запись из базы. Нельзя удалить данные о клиенте, если в таблице «Счета» есть связанные с ним записи, программа предупреждает об этом пользователя, показывая соответствующее сообщение (Рис. 4). В режиме изменение неактивна кнопка «Запись» и появляется дополнительная панель с кнопками навигации по таблице. И, наконец, для завершения работы с формой «Клиент» нужно нажать кнопку закрытия окна, и пользователь попадает на форму главного меню.

При редактировании таблицы Фильмы пользователю нужно учитывать, что невозможно удалить данные о фильме, если его количество на складе больше 0.

При выборе пункта меню «Счёт» или соответствующей вкладки главной формы пользователь может работать со счетами клиентов. При появлении окна «Новое..» -> «Счёт» пользователь должен ввести штрих код фильма и выбрать фамилию клиента, остальные поля заполняются автоматически (поля - стоимость и дата и возврат). Дата выставляется текущая, а поле стоимость изначально берется из таблицы MOVIE а потом высчитывается с учетом скидок клиенту, возврату автоматически присваивается “N”.

Когда клиент возвращает фильм, то следует поставить в этом поле “Y” в ручную или через сканер. При этом количество фильмов в базе увеличивается на 1.

На вкладке Счета также есть кнопки «Режим master detail» и «Cведенная таблица». При нажатии на кнопку «Сведенная таблица». Появляется окно с этой таблицей, которая является аналогом таблицы «Счета». Такая таблица может только отображать данные, редактировать их невозможно. Удобство её заключено в том, что листаться она будет заметно быстрее. Листание полного экрана таблицы состоящей из тысячи записей происходит в доли секунды, в то время как таблица «Счета» листается с заметными задержками.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4098
Авторов
на СтудИзбе
673
Средний доход
с одного платного файла
Обучение Подробнее