Автоматизация предприятия
3) один или более управляющих файлов - Управляющие файлы содержат информацию, необходимую для запуска экземпляра Oracle (в том числе расположение файлов данных и файлов журналирования операций). Управляющие файлы должны быть хорошо защищены. Oracle предоставляет механизм для хранения нескольких копий управляющих файлов[9].
Логический уровень составляют следующие элементы:
- Одно или несколько табличных пространств;
- Схема БД, состоящая из таблиц, кластеров, индексов, представлений, хранимых процедур и т.д.
База данных разделяется на одно или более логических частей, называемых табличными пространствами. Табличные пространства используются для логической группировки данных между собой. Например, Вы можете определить одно табличное пространство для бухгалтерских данных, а другое для складских. Сегментирование групп по табличным пространствам упрощает администрирование этих групп. Каждое табличное пространство состоит из одного или более файлов данных. Используя несколько файлов данных для одного табличного пространства, можно распределить их по разным дискам, увеличив тем самым скорость ввода-вывода и, соответственно, производительность системы.
Таким образом, БД Oracle состоит из табличных пространств, которые, в свою очередь, состоят из файлов данных. А файлы данных могут быть разбросаны по нескольким физическим дискам.
В процессе создания БД Oracle автоматически, создается табличное пространство SYSTEM. Хотя для небольших баз данных может хватить этого табличного пространства, но все же следует создать дополнительные табличные пространства для пользовательских данных. В табличном пространстве SYSTEM хранится словарь данных [9].
В СУБД Oracle контроль над дисковым пространством происходит с использованием специальных логических структур.
Эти структуры следующие:
· блоки данных - Это наименьшая единица хранения данных в БД Oracle. Блок БД содержит заголовочную информацию о себе, и данные.
· экстенты - Экстент состоит из блоков данных.
· сегменты - Сегмент состоит из совокупности экстентов, содержащих определенный вид данных.
БД Oracle использует четыре типа сегментов:
1. сегмент данных - хранит пользовательские данные.
2. индексный сегмент - содержит индексы.
3. сегмент отката - хранит информацию отката, используемую при возврате к предыдущему состоянию БД.
4. временный (промежуточный) сегмент - создается в случае, если для выполнения SQL-выражения необходимо дополнительное рабочее пространство. Эти сегменты уничтожаются сразу после выполнения SQL-команд. Промежуточные сегменты используются также в разнообразных операциях с БД, например, при сортировке.
Экстенты являются строительными блоками сегментов, и, в тоже время, состоят из блоков данных. Экстенты используются для минимизации неиспользуемого (пустого) пространства хранилища. По мере увеличения количества данных в табличных пространствах, экстенты используются для хранения тех данных, которые могут разрастаться. Таким образом, несколько табличных пространств могут делить между собой пространство хранилища без предопределения разделов этих табличных пространств.
При создании табличного пространства можно указать минимальное число определения экстент, а также число экстент, добавляемых при заполнении уже определенных. Это распределение позволяет контролировать пространство хранилища БД.
Блоки данных - это наименьшие единицы БД Oracle. Они физически хранятся на диске. Блоки данных на большинстве систем 2Кб (2048 байт), но Вы можете изменить этот размер на свое усмотрение для увеличения эффективности работы системы [9].
1.4. Описание систем
1.4.1 Существующая система
В настоящее время расчеты потребности в материалах ведутся плановым бюро ОМТС с помощью калькулятора на основании представленных ОГТ специфицированных норм расхода материалов на одну единицу изделия. На каждый материал заведена карточка, в которой ведутся расчеты на материал под каждый запуск в производство. По мере необходимости оплаты финансовым отделом завода по установленным правилам ОМТС оформляет заявку на оплату. Планируемые суммы ежеквартально с разбивкой по месяцам передаются в группу бюджетирования для включения в бюджет. Контроль ведется по мере поступления и выдачи материалов в производство.
1.4.2. Управление запасами и производством по точке перезаказа
Одной из задач управления предприятием, которую выполняет служба ОМТС, является задача управления запасами. Для учета и управления запасами, который в н.в. выполняется вручную, применяются карточки складского учета, в которых указывается поступление материалов на склад, их отпуск со склада, а также их остаток. Аналогично информация с карточек дублируется в книгах учета в ОМТС. Кроме того, в ОМТС ведется карточка на материал, в которой вручную заносится потребность под запуск, лимит для выдачи материалов в цеха. При использовании карточного метода задача пополнения запасов реализуется простым (с точки зрения трудозатрат персонала) и очень неэффективным (с точки зрения достижения основных целей предприятия) способом: когда какой-нибудь материал был полностью израсходован, формируется заказ поставщику. В этом случае (поскольку поставка не всегда могла происходить моментально) в течение некоторого времени необходимый материал просто отсутствовал на складе.
Логичным решением, исключающим такую ситуацию, установление некоторого минимального уровня запасов на складах, по достижении которого формируется заказ на пополнение. Т.е, как только реальное количество материала на складе опускалось ниже определенного уровня, называемого точкой перезеказа, значение которой зависело от времени реализации потребности, величина заказываемой партии и некоторых других параметров, происходило оформление нового заказа на поставку этого материала.
1.4.3. Предлагаемая система
ОМТС из компьютерной системы получает информацию о необходимом к закупке количестве материалов (брутто-потребность). Все необходимые расчеты выполняет БМТН предприятия на каждый запуск производства. Плановое бюро ОМТС группирует все рассчитанные потребности ПО ЗАКАЗУ и ПО ЗАВОДУ, в случае необходимости потребность корректируется на допустимые замены согласно таблице замен или оформляется карта отклонений.
Входной информацией является:
1. Рассчитанные MRP-потребности
2. Заявки на заказ поставщику (ответственные ОМТС)
Выполняемые действия:
1. Просмотр необходимых к закупке материалов
2. Формирование заказов на закупку и уведомление финансового отдела о необходимости оплаты в установленном на предприятии порядке
3. Отслеживание заказов поставщикам и уведомление финансового отдела об оплате в соответствии с договором (заявкой на поставку).
выходная информация:
1. Заказы поставщикам (ожидаемые приходы-даты, количество)
2. Уведомления о необходимости оплаты - заявка на оплату и счет со стороны поставщика для оплаты
При расчете MRP потребности необходимо учесть разрешенные замены согласно СТП и карты отклонений, т.е. если отдел закупок, просмотрев потребность, должен установить связку товар-поставщик, т.е. связать с материалом поставщиков. Если такого материала нет, тогда ищут альтернативу и вводят карту отклонений.
Последовательность выполняемых действий:
1. Выбор режима расчета MRP потребности:
- на каталог
- по на все каталоги
2. Расчет MRP потребности.
3. Расчет MRP потребности с учетом замен.
4. Привязка поставщиков. Если есть таблица поставщиков (т.е. связь материалов и поставщиков)
5. Связка поставщик - материал, по поставщику договор и сроки поставки. Не исключено, что по одному материалу имеется несколько поставщиков.
6. Далее дать возможность посмотреть уже сформированные заказы. Т.к каталоги на один и тот же заказ или разные пополняются, то нужно все время проверять общую потребность к закупке с уже сформированными заказами и формировать новые.
Конструкторская часть
2.1. Назначение и состав программного комплекса
Программный комплекс предназначен для уменьшения трудоемкости работы сотрудников отдела материально-технического снабжения ОАО «Тайфун» при планировании закупок необходимых материалов.
Комплекс разрабатывается для автоматизации планирования процесса закупок.
Программный комплекс состоит из клиентской части, выполненной в среде программирования Delphi, и серверной части, выполненной в виде базы данных Oracle, хранимой на сервере и состоящий из таблиц, хранимых процедур и других компонентов базы данных.
1.2. Безопасность доступа к данным
1.2.1. Идентификация
Идентификация и проверка подлинности пользователей или аутентификация - основное средство защиты информационных систем от постороннего вмешательства.
Под идентификацией обычно понимается процедура, посредством которой пользователь или процесс сообщает сведения о себе. Проверка подлинности, или аутентификация - это процедура проверки достоверности предъявленных данных. Как правило, большинству пользователей требуется доступ ко многим сервисам, предоставляемым системами. В то же время ни им, ни системным администраторам не хочется размножать регистрационную информацию и особым образом входить в каждый сервер.
Выход из этой ситуации заключается в создании специального сервера проверки подлинности, услугами которого будут пользоваться другие серверы и клиенты информационной системы. Выделение особого сервера аутентификации позволяет реализовать собственные прикладные комплексы со своей системой понятий, но со стандартной процедурой проверки подлинности, что существенно облегчает управление правами доступа пользователей.
Для данных целей подсистема использует модуль UnitM4Server, который содержит все необходимые функции. Проверку подлинности осуществляет функция User_Connect. Входные параметры: login - имя пользователя, password - пароль. Данная функция принимает имя пользователя и пароль и при правильном вводе, подключает пользователя к базе. Окно ввода имени пользователя и пароля представлено на рис 2.
Рис.2. Окно проверки доступа
Код процедуры TMainF.SocketConnection1AfterConnect:
Procedure TMainF.SocketConnection1AfterConnect(Sender: TObject);
var
us_n,us_p,us_fio:Widestring;
begin
us_n:='';
us_p:='';
try
M4Server:=IM4ServerDisp(IDispatch(SocketConnection1.appServer));
if M4Server.Error_Code<>0 then
raise exception.Create(M4Server.Error_Message);
us_n:=UpperCase(IniParameters.UserName);
if UsNamePass='' then
PassDlg(us_n, us_p)
else
begin
us_n:=LeftStr(UsNamePass,pos('@',UsNamePass)-1);
us_p:=midStr(UsNamePass,length(us_n)+2,Length(UsNamePass)-2);
end;
if us_n<>'' then
IniParameters.UserName:=us_n;
if M4Server.User_Connect(us_n,us_p,us_fio) > -1 then
begin
StatusBar1.Panels[0].Text := us_fio;
us_n:='';
us_p:='';
menu:=MainMenuConnected;
ShowModulKatalogs(nil)
end
else
begin
if UsNamePass='' then
begin
ShowMessage('Неправильное имя пользователя или пароль!');
SocketConnection1.Close;
M4Server:=nil;
end
else
close;
end
except
//raise exception.Create('Соединение невозможно!');
SocketConnection1.Close;
M4Server:=nil;
raise
end;
end;
1.2.2. Авторизация
Компоненты и процессы авторизации позволяют предоставлять пользователям разрешения на доступ к ресурсам и управлять этими разрешениями.
Сотрудники завода, имеющие доступ к информационным ресурсам, получают идентификатор. Чтобы обеспечить управление доступом к управляемым ресурсам, например, базам данных и приложениям, для идентификаторов назначаются роли.
Роль - это ключевой компонент функции управления доступом на основе ролей. Роли создаются в соответствии с тем, что требуется сотрудникам для эффективного предоставления доступа к нужному инструментарию [7].
Политика предоставления доступа задает связь между сотрудниками, принадлежащими к различным ролям в организации, и службами, которые соответствуют различным ресурсам, а также определяет, какие права будут предоставлены этим сотрудникам при доступе к службам.
Реализуемая политика предоставления доступа отражает политику управления идентификацией, соответствующую плану обеспечения защиты на заводе.
Политика предоставления доступа представляет собой ключевой компонент каркаса автоматизации управления жизненным циклом идентификаторов.
Предоставляемое право определяет, какие службы связаны с правилом политики и какие условия применимы к предоставляемому праву. Например, предоставляемое право может указывать, есть ли у связанной с ним роли доступ ко всем экземплярам службы, или только к какому-то одному экземпляру этой службы. С предоставляемыми правами также связаны рабочие потоки, которые позволяют реализовать процедуры утверждения при предоставлении доступа к службам.
1.2.3. Управление доступом на основе ролей
Управление доступом на основе ролей существенно сокращает затраты и сложность администрирования пользователей за счет реализации комплексного, основанного на правилах политики, решения по предоставлению пользователям доступа к ресурсам в соответствии с действующим на заводе требованиями к защите.
Функция управления доступом на основе ролей использует роли и правила политики предоставления доступа, чтобы оценивать, проверять и применять бизнес-процессы и правила для предоставления доступа пользователям. Главные администраторы создают правила политики предоставления доступа и назначают пользователям роли, для которых заданы наборы предоставляемых прав, определяющих разрешения на доступ к ресурсам. Роль, назначенная пользователю, отражает круг его обязанностей и сферу его деятельности в организации [7].
Функция управления доступом на основе ролей оценивает изменения в информации о пользователях, чтобы определить, влияют ли эти изменения на назначение пользователю той или иной роли. Если возникает такая необходимость, правила политики пересматриваются и сразу же вносятся изменения в предоставляемые права. И аналогично, изменение в наборе ресурсов, с которым связано правило политики, может инициировать изменение в соответствующих предоставляемых правах.
Управление доступом на основе ролей включает в себя следующие возможности:
§ Обязательные и дополнительные предоставляемые права; дополнительные права не предоставляются автоматически, но пользователь в группе может затребовать такие права.
§ Обязательные службы, доступ к которым должен предоставляться до того, как будут заданы те или иные права доступа. Например, права доступа к Windows NT(R) должны предоставляться до предоставления прав на доступ к Microsoft Outlook(R).
§ Права могут предоставляться по умолчанию, а также могут применяться ограничения предоставляемых прав, когда каждой характеристике предоставляемого права присваивается значение по умолчанию или, в зависимости от возможностей предоставляемого права, ограничивается область его действия.
§ Можно создать одну учетную запись с несколькими разрешениями, управляемыми разными правилами политики.
§ Можно создавать частные просмотры информации о пользователях и доступных ресурсах с применением фильтров.
§ Можно применять методы аутентификации пользователей, соответствующие внутренней политике защиты.
§ Можно безопасным образом распределять компоненты системы предоставления доступа по средам WAN и Интернет (включая переход через брандмауэры).
§ Можно создавать ID пользователей с использованием унифицированных, заданных пользователями алгоритмов.
Функция User_Connect(login, password) помимо подключения к базе данных, определяет к какой роли принадлежит данный пользователь и связывает его с определенными правами. В зависимости от привилегий конкретного пользователя, ему разрешается или запрещается просматривать, редактировать или удалять определенные записи в базе данных.
1.3. Алгоритмы работы подсистемы
Разработанная программа, после соединения с базой данных, формирует таблицу со списком каталогов, в которых хранится информация на состав конечного изделия. Из этой таблицы выбирается каталог и для этого каталога делается расчет потребности, если необходимо сделать расчет для нескольких каталогов, то выбирается несколько каталогов. Когда расчет произведен, формируется новая таблица с материалами и их потребностями. Каждому материалу соответствует свой уникальный код. Материал, который входит в состав изделия по необходимости можно заменить на какой-либо другой, но обязательно из той же группы. Замена может быть полной или частичной, так как часть необходимого материала может быть в наличии. Для каждого необходимого материала или для замены можно ввести соответствующего контрагента, то есть у кого будет производиться закупка. Для этого из справочника контрагентов, в котором содержится информация о названии, городе, физическом и юридическом адресе, индивидуальном налоговом номере и прочие характеристики, выбирается контрагент. После добавления контрагента необходимо ввести количество материала (в пределах ранее рассчитанной величины), требуемого на закупку, а так же единицу измерения (килограмм, метр, кубометр, литр и т.д.) и закупочную цену. После ввода всех необходимых данных формируется таблица заказов в которой содержится информация о материале, его количестве, цене и контрагенте. В этой таблице можно выбрать перечень материалов на которые надо оформлять заказ и формируется отчет.
2.4. Разработка таблиц
2.4.1. Структура таблицы «материалы»
«Таблица материалы» содержит в себе информацию о всех материалах и их характеристиках (табл.1).
Табл.1
Таблица имеет следующие поля:
MATERIAL_ID : Идентификатор
KOD_OKP : Код ОКП
NAME : Наименование
ED_IZM : Еденица измерения
NORMA : Минимальная норма запаса на складе
DECLARATION : Дополнительное описание
KORR_SCHET : Балансовый счет
USER_ID : Идентификатор пользователя
DATE_CREATE : Дата создания
DATE_LAST_CHANGE : Дата последнего изменения
MAT_TYPE : Тип еденицы
IMBASE_KEY : Ключ в IMBASE
SAPFORD_KEY : Ключ в SAPFORD
GR_ZAMEN : Номер группы взаимозаменяемых материалов
MIN_RASHOD : Минимальная партия выдачи
2.4.2. Структура таблицы «контрагенты»
«Таблица контрагенты» содержит информацию о контрагентах и их характеристиках (табл.2).
Табл.2
Таблица имеет следующие поля:
CODE : Внешний идентификатор (три знака почтового индекса + четырехзанчный код)
NAME : Наименование
FULL_NAME : Полное имя
INN : ИНН банка
KPP : КПП предприятия
ZIP : Почтовый индекс
REGION : Регион, край, область, автономный округ.
SUB_REGION : Район
CITY : Наиненование населенного пункта
NAS : Внутренний код
STREET : Улица
HOUSE : Дом
HOUSE_CASE : Корпус
HOUSE_CASE_STRUC : Строение
CONTRAGENT_ID : Внутренний код
PHONE : Телефон
FAX : Факс
E_MAIL : Электронный почтовый ящик
ADD_INF : Дополнительная информация
OFFICE : Офис
COUNTRY : Страна
DATE_CREATE : Дата создания записи
DATE_LAST_CHANGE : Дата изменения записи
USER_ID : Идентификатор пользователя
USER_ID_CHANGE : Идентифокатор изменившего пользователя
2.4.3. Структура таблицы «замены»
«Таблица замены» содержит информацию о заменах (табл.3).
Табл.3
Таблица имеет следующие поля:
MZ_ID : Уникальный идентификатор
MZ_KAT_ID : Каталог
MZ_MAT_ID : Идентификатор заменяемого материала
MZ_NEW_MAT_ID : Ифентификатор нового материала
MZ_KOL : Количество заменяемого материала
MZ_MAX_KOL : Всего заменяемого материала
MZ_NEW_KOL : Количество нового материала
MZ_TYPE : Тип замены (0 - полная, 1 - частичная)
Процедура добавления замены:
CREATE OR REPLACE PROCEDURE "MATERIALS_ZAMEN_CREATE" (
in_kat_id IN sostav.sos_kat_id%TYPE,
in_mat_id IN materials_zamen.mz_mat_id%TYPE,
in_new_mat_id IN materials_zamen.mz_mat_id%TYPE,
in_old_kol IN materials_zamen.mz_kol%TYPE,
in_max_kol IN materials_zamen.mz_max_kol%TYPE,
in_new_kol IN materials_zamen.mz_new_kol%TYPE,
in_zamen_type IN materials_zamen.mz_type%TYPE
)
/*добавление записи по материалу к версии расчета*/
IS
out_id INTEGER;
mat_count INTEGER := 0;
summ_kol NUMBER := 0;
BEGIN
SELECT seq_material_zamen_mz_id.NEXTVAL
INTO out_id
FROM DUAL;
-- Ищем были ли произведены полные замены на данный материал
SELECT COUNT (*)
INTO mat_count
FROM materials_zamen
WHERE mz_mat_id = in_mat_id AND mz_type = 0
AND mz_kat_id = in_kat_id;
-- Если производится частичная замена и уже есть полная замена
IF (in_zamen_type IN (0, 1) AND mat_count > 0)
THEN
raise_application_error
(-20001,
'Вы не можете проводить замену, т.к. с данным материалом уже была произведена полная замена.'
);
END IF;
mat_count := 0;
-- Ищем были ли произведены частичные замены на данный материал
SELECT COUNT (*)
INTO mat_count
FROM materials_zamen
WHERE mz_mat_id = in_mat_id AND mz_type = 1
AND mz_kat_id = in_kat_id;
-- Если производится полная замена и уже есть частичные замены
IF (in_zamen_type = 0 AND mat_count > 0)
THEN
raise_application_error
(-20001,
'Вы не можете проводить полную замену, т.к. с данным материалом уже была произведена частичная замена.'
);
END IF;
--Проверяем, можно ли произвести частичную замену
IF (in_zamen_type = 1)
THEN
SELECT SUM (mz_kol)
INTO summ_kol
FROM materials_zamen
WHERE mz_mat_id = in_mat_id AND mz_type = 1 AND mz_kat_id = in_kat_id;
summ_kol := summ_kol + in_old_kol;
IF (summ_kol > in_max_kol)
THEN
raise_application_error
(-20001,
'Общее количество материалов при проведении частичных замен превышает максимальное количество.'
);
END IF;
END IF;
INSERT INTO materials_zamen
(mz_id, mz_kat_id, mz_mat_id, mz_new_mat_id, mz_kol,
mz_max_kol, mz_new_kol, mz_type
)
VALUES (out_id, in_kat_id, in_mat_id, in_new_mat_id, in_old_kol,
in_max_kol, in_new_kol, in_zamen_type
);
END materials_zamen_create;
Процедура удаления замены:
CREATE OR REPLACE PROCEDURE "MATERIALS_ZAMEN_DELETE" (
in_mz_id IN materials_zamen.mz_id%TYPE
)
/*удаление замены материала*/
IS
BEGIN
DELETE FROM materials_zamen
WHERE mz_id = in_mz_id;
END materials_zamen_delete;
2.4.4. Структура таблицы «закупок»
«Таблица закупок» содержит информацию о заменах (табл.4).
Табл.4
MC_ID : Идентификатор
MC_MAT_ID : Идентификатор материала
MC_MZ_ID : Идентификатор замены материала
MC_POST_ID : Идентификатор контрагента
MC_NAME : Наименование контрагента
MC_COUNT : Количество на закупку
MC_COST : Цена
MC_EDIZM : Еденица измерения
MC_KAT_ID : Каталог
Процедура добавления контрагента в таблицу закупок:
CREATE OR REPLACE PROCEDURE "MATERIALS_CONTRAGENT_CREATE" (
in_mc_kat_id IN materials_contragent.mc_kat_id%TYPE, in_mc_mat_id IN materials_contragent.mc_mat_id%TYPE, in_mc_mz_id IN materials_contragent.mc_kat_id%TYPE, in_mc_post_id IN materials_contragent.mc_post_id%TYPE, in_mc_name IN materials_contragent.mc_name%TYPE, in_mc_count IN materials_contragent.mc_kat_id%TYPE, in_mc_cost IN materials_contragent.mc_cost%TYPE, in_mc_edizm IN materials_contragent.mc_edizm%TYPE, out_id OUT materials_contragent.mc_id%TYPE
)
/*добавление записи по материалу к версии расчета*/
IS
BEGIN
SELECT seq_materials_contragent_mc_id.NEXTVAL
INTO out_id
FROM DUAL;
INSERT INTO materials_contragent
(mc_id, mc_mat_id, mc_mz_id, mc_post_id, mc_name,
mc_count, mc_cost, mc_edizm, mc_kat_id
)
VALUES (out_id, in_mc_mat_id, in_mc_mz_id, in_mc_post_id, in_mc_name,
in_mc_count, in_mc_cost, in_mc_edizm, in_mc_kat_id
);
END materials_contragent_create;
Процедура удаления контрагента в таблицу закупок:
CREATE OR REPLACE PROCEDURE "MATERIALS_CONTRAGENT_DELETE" (
in_mc_id IN materials_zamen.mz_id%TYPE
)
/*удаление контрагента*/
IS
BEGIN
DELETE FROM materials_contragent
WHERE mc_id = in_mc_id;
END materials_CONTRAGENT_delete;
2.5. Разработка модулей
2.5.1. Модуль Mat_Zamen.pas
Модуль Mat_Zamen.pas, представленный на рис.3, является главным модулем проекта, так как он содержит описание действий происходящих при загрузке программы, а также описание формы MainForm.
На форме расположены три таблицы TDBGridEh. Это таблицы материалов, замен и контрагентов, а также закладки и меню TMenuItem. На форме присутствуют компоненты TСlientDataSet, TdataSource.
Компонент TClientDataSet используется в клиентской части многозвенного распределенного приложения.
Компонент обеспечивает выполнение следующих основных функций:
* получение данных от удаленного сервера и передача ему сделанных изменений с использованием удаленного компонента-провайдера;
* представление набора данных при помощи локального буфера и поддержка основных операций, унаследованных от класса TDataSet;
* объединение записей набора данных при помощи агрегатных функций для получения суммарных данных;
* локальное сохранение набора данных в файле и последующее восстановление набора данных из файла;
* представление набора данных в формате XML [6].
Предком компонента TClientDataSet является класс TDataSet, поэтому TClientDataSet обладает таким же набором функций, что и обычный компонент, инкапсулирующий набор данных. Основное же отличие заключается в том, источник данных для него доступен только через удаленный компонент-провайдер. Это означает, что сохранение изменений и обновление набора данных осуществляется локально, без обращения к источнику данных [7].
Как и обычный компонент, компонент TClientDataSet может использоваться совместно с визуальными компонентами отображения данных. Для этого нужен компонент TDataSource.
На втором этапе разработки приложения баз данных необходимо перенести на форму и настроить компонент TDataSource. Он обеспечивает взаимодействие набора данных с компонентами отображения данных. Чаще всего одному набору данных соответствует один компонент TDataSource, хотя их может быть несколько.
Для настройки свойств компонента необходимо выполнить следующие действия.
1. Связать набор данных и компонент TDataSource. Для этого используется свойство DataSet компонента TDataSource, доступное через Инспектор объектов. Это указатель на экземпляр компонента доступа к данным.
В списке этого свойства в Инспекторе объектов перечислены все доступные компоненты наборов данных.
2. Переименовать компонент. Это не обязательное действие. Тем не менее желательно присваивать компонентам осмысленные имена, соответствующие названиям связанных наборов данных [7].
Компонент меню, представленный на рис. 4, выполняет следущие процедуры:
· Ввод / удаление контрагента;
· Ввод / удаление замены;
· Печать отчета
Рис. 4. Главное меню
Процедуры ввода (TFRep_Mats.N5Click) и удаления (TFRep_Mats.N14Click) контрагентов.
procedure TFRep_Mats.N5Click(Sender: TObject);
begin
IF not assigned(scM4_ContrAgents) then
initscM4_ContrAgents(SharedConnection.ParentConnection);
ContrAgentsGet_Sprav(Self, IM4ContrAgentsDisp(IDispatch(scM4_ContrAgents.AppServer)),
(Screen.DesktopHeight div 2) - (height div 2),
(Screen.DesktopWidth div 2) - (width div 2),
'', '', '',
ContrAgent_Name,
ContrAgent_Code);
if (DBGEh_Mats.Focused = True) and (ContrAgent_Name <> '') Then
Mat_Contr_Add(Application, SharedConnection, Kat_Id, CDS_Mats.FieldByName('MD_MR_ID').AsInteger,
0, 0, ContrAgent_Code, ContrAgent_Name)
else if (DBGEh_Zamen.Focused = True) and (ContrAgent_Name <> '') then
Mat_Contr_Add(Application, SharedConnection, Kat_Id, CDS_Zamen.FieldByName('MZ_MAT_ID').AsInteger,
CDS_Zamen.FieldByName('MZ_ID').AsInteger, 1, ContrAgent_Code, ContrAgent_Name);
Contr_Refresh;
end;
procedure TFRep_Mats.N14Click(Sender: TObject);
begin
V.Mat_Zamen_Contr_Del(CDS_Contr.FieldByName('MC_ID').AsInteger);
Contr_Refresh;
end;
Процедуры ввода и удаления замен:
procedure TFRep_Mats.N13Click(Sender: TObject);
begin
Enter_Zamen(Application, SharedConnection,
Kat_Id,
CDS_Mats.FieldByName('MD_MR_ID').AsInteger,
CDS_Mats.FieldByName('GM_ID').AsInteger,
CDS_Mats.FieldByName('MAT_OKP').AsInteger,
CDS_Mats.FieldByName('MR_NAME').AsString,
CDS_Mats.FieldByName('POTREB').AsString,
CDS_Mats.FieldByName('GM_NAME').AsString);
Zamen_Refresh;
end;
procedure TFRep_Mats.N15Click(Sender: TObject);
begin
V.Mat_Zamen_Delete(CDS_Zamen.FieldByName('mz_id').AsInteger);
Zamen_Refresh;
Contr_Refresh;
end;
Печать отчета
procedure TFRep_Mats.N8Click(Sender: TObject);
begin
Mat_Zamen_Rep(Application, SharedConnection, Kat_Id, 1, Kat_ZCO_NAME, Kat_Name);
end;
2.5.2. Модуль Mat_Zamen_New.pas
На форму модуля Mat_Zamen_New вынесены следующие компоненты: TDBGridEh, TbitBtn, TdataSource, TclientDataSet, Tedit, TradioGroup (рис.5).
Рис.5. Модуль Mat_Zamen_New
TDBGridEh - таблица в которую заносятся данные , TbitBtn - кнопки ввода замены и отмены, TdataSource и TclientDataSet - для соединения с базой данных, Tedit - строки с материалами, TradioGroup - выбор полной или частичной замены.
Процедура выбора типа замены:
rocedure TFNew_Zamen.RGClick(Sender: TObject);
begin
if RG.ItemIndex = 1 then
begin
DBN_OldKol.Enabled := True;
end
else if RG.ItemIndex = 0 then
begin
DBN_OldKol.Enabled := False;
DBN_OldKol.Value := Old_Kol;
end;
Zamen_Type := RG.ItemIndex;
end;
Процедура ввода замены:
procedure TFNew_Zamen.BitBtn1Click(Sender: TObject);
var Old, Max, New : WideString;
begin
Old := FloatToStr(DBN_OldKol.Value);
Max := FloatToStr(Max_Kol);
New := FloatToStr(DBN_NewKol.Value);
V.Mat_Zamen_Create(Kat_Id,
Mat_Id,
CDS_Mats.FieldByName('MATERIAL_ID').AsInteger,
Old,
Max,
New,
Zamen_Type);
Close;end;
2.5.2. Модуль Mat_Zamen_CNTR_Add.pas
На форме (рис. 6) находятся следующие компоненты: Tedit, TDBNumberEditEh, TspeedButton, TclientDataSet, TdataSource, TcomboBox.
Tedit - наименование контрагента, TDBNumberEditEh - количество закупаемого материала и цена, TcomboBox - выпадающее меню выбора едениц измерения, TspeedButton - рабочие кнопки , TclientDataSet и TdataSource - связь с базой данных.
Рис.6. Модуль Mat_Zamen_CNTR_Add
2.5.2. Модуль формирования очета
На форму (Рис.7 ) вынесена таблица, меню и компоненты связи с базой данных.
После заполнения таблицы, выбрав из меню строку «печать отчета» появится окно компонента FastReport (Рис.8). Этот компонент отвечает за печать отчета.
Рис.7. Таблица закупок
Рис.8. Отчет FastReport
3. Технологическая часть
3.1. Требования к аппаратному и программному обеспечению
§ Требования к аппаратному обеспечению:
- Процессор Pentium 800 МГц;
- Объем оперативной памяти 128 Мбайт;
- Объем жесткого диска не менее 5 Гбайт;
- Монитор SVGA, клавиатура и манипулятор мышь.
§ Требования к программному обеспечению:
- программа должна работать под управлением операционной системы Microsoft Windows 98/ME/2000/XP.
3.2. Установка подсистемы
Вычислительная среда поставляется на диске CD-R, емкостью 700 Мб. Установка производится в несколько этапов:
§ Проверить соответствие оборудования, на которое предполагается произвести установку, минимальным требованиям для работы подсистемы;
§ Вставить компакт-диск с программой в CD-ROM;
§ Скопировать каталог K_T_Base и все его содержимое на жесткий диск, с которого предполагается производить запуск программы, в каталог C:\ K_T_Base;
§ Для удобства запуска создать на рабочем столе операционной системы значок «K_T_Base», ссылающийся на программу C:\ K_T_Base \ K_T_Base.exe, рабочий каталог C:\ K_T_Base;
§ Создать в главном меню элемент, ссылающийся на программу C:\ K_T_Base \ K_T_Base.exe;
§ Произвести запуск программы;
§ Установка завершена.
3.3. Руководство администратора
Для функционирования подсистемы необходимо наличие специального ПО:
1. На сервере баз данных необходимо установить серверную часть Oracle.
2. Для сервера приложений необходимо установить: клиентскую часть Oracle - для связи с сервером Oracle, Borland Socket Server - для прослушивания порта, к которому будет происходить подключение и Borland Database Engine - для соединения сервера приложений с клиентской частью Oracle.
3. Также необходимо зарегистрировать сервер приложений, запустив его.
4. На клиентских машинах нет необходимости в установке дополнительного программного обеспечения, кроме самой подсистемы.
Страницы: 1, 2, 3
|