
- •Аннотация
- •Annotation
- •Содержание
- •Введение
- •1 Технико-экономическое обоснование проекта
- •2 Анализ процесса контроля исполнения распорядительных документов предприятия
- •3 Обоснование выбора средств разработки
- •4 Разработка функциональной модели
- •4.1 Построение контекстной диаграммы
- •4.2 Декомпозиция моделируемой системы
- •5 Разработка информационной модели
- •5.1 Определение сущностей
- •5.2 Определение связей между сущностями
- •5.3 Определение первичных ключей
- •5.4 Определение атрибутов сущностей и внешних ключей
- •5.5 Создание логической модели бд
- •5.6 Создание физической модели бд
- •5.7 Прямое проектирование
- •6 Разработка алгоритмов функционирования и программная реализация информационной системы
- •6.1 Разработка алгоритмов функционирования
- •6.2 Программная реализация информационной системы
- •7 Экспериментальная часть
- •7.1 Тестирование программного обеспечения
- •7.2 Руководство пользователя
- •8 Экономическая часть
- •8.1 Технико-экономическое обоснование темы
- •8.2 Построение ленточного графика
- •8.3 Составление сметы затрат на разработку и определение цены на программную разработку
- •8.3.1 Материальные затраты
- •8.3.2 Затраты на оплату труда
- •8.3.3 Отчисления на социальные нужды
- •8.3.4 Амортизация основных фондов
- •8.3.5 Накладные расходы
- •8.3.6 Затраты на проект
- •8.4 Экономическая эффективность разработки
- •9 Безопасность и экологичность проекта
- •9.1 Анализ условий труда на рабочем месте оператора пэвм
- •9.2 Выявление опасных факторов, влияющих на оператора пэвм
- •9.2.1 Воздушная среда в помещениях с пэвм
- •9.2.2 Опасность поражения электрическим током
- •9.2.3 Повышенный уровень шума
- •9.2.4 Неблагоприятные условия зрительной работы
- •9.2.5 Электромагнитное излучение пэвм
- •9.2.6 Расчет освещенности рабочего места оператора
- •9.3 Обеспечение пожарной безопасности
- •9.3.1Оценка пожароопасности объекта
- •9.3.2 Категории зданий по взрывопожарной и пожарной опасности
- •9.3.3 Причины возникновения пожаров и мероприятия по их устранению
- •9.4 Экологичность проекта
- •Заключение
- •Список используемых источников
- •Федеральное агентство по образованию
- •«Рязанский государственный радиотехнический университет» Кафедра автоматизированных систем управления
- •Integer
- •Integer;
- •Integer
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Рязанский государственный радиотехнический университет» Кафедра автоматизированных систем управления
Утвержден
ДП-02069154-230201-03-08
«Разработка информационной системы контроля исполнения распорядительных документов»
Текст программы
ДП-02069154-230201-03-08
Листов ??
Аннотация
В данном приложении представлены тексты основных модулей для создания клиентского приложения системы контроля исполнения распорядительных документов предприятия, а также листинг создания основных объектов БД.
СОДЕРЖАНИЕ
Приложение А. Листинг команд создания основных объектов базы данных
Приложение Г. Текст программы-------129
Основная программа BlagoProject.dpr---------------------------130
Модуль MainFormUnit.pas---------------------------------------------130
Модуль PrMerFormUnit.pas-----------------------------------------------133
Модуль PrNapFormUnit.pas---------------------------------------------135
Модуль PrOrgUnit.pas-------------------------------------------------------137
Модуль WedNalihFormUnit.pas-------------------------------------------139
Модуль WedomUnit.pas--------------------------------------------------145
Модуль WedOtkFormUnit.pas-----------------------------------157
/***************************************************************************/
/*** Generated 2006.11.26 31.05.2007 15:08:24 ***/
/***************************************************************************/
SET SQL DIALECT 3;
SET NAMES WIN1251;
CONNECT 'localhost:D:\BDTEST_FOR_DIPLOM.gdb' USER 'SYSDBA' PASSWORD 'masterke';
/***************************************************************************/
/*** Domains ***/
/***************************************************************************/
CREATE DOMAIN DATA_TYPE AS
DATE ;
CREATE DOMAIN NUMBER1_TYPE AS
Integer
NOT NULL
CHECK (VALUE >= 1);
CREATE DOMAIN NUMBER3_TYPE AS
Integer;
CREATE DOMAIN NUMBER9_TYPE AS
Integer
NOT NULL
CHECK (VALUE >= 1);
CREATE DOMAIN VARCHAR6_TYPE AS
VARCHAR(6) ;
CREATE DOMAIN VARCHAR40_TYPE AS
VARCHAR(40) ;;
CREATE DOMAIN VARCHAR100_TYPE AS
VARCHAR(100) ;
/***************************************************************************/
/*** Generators ***/
/***************************************************************************/
CREATE GENERATOR CF_KVR_GEN;
SET GENERATOR CF_KVR_GEN TO 5;
CREATE GENERATOR CF_KWORC_GEN;
SET GENERATOR CF_KWORC_GEN TO 188;
CREATE GENERATOR CF_LITER_GEN;
SET GENERATOR CF_LITER_GEN TO 6;
CREATE GENERATOR CF_OLDW_GEN;
SET GENERATOR CF_OLDW_GEN TO 8;
CREATE GENERATOR DELIVERY_ITEM_GEN;
SET GENERATOR DELIVERY_ITEM_GEN TO 6;
CREATE GENERATOR CF_PRI_GEN;
SET GENERATOR CF_PRI_GEN TO 5;
CREATE GENERATOR CF_PRICP_GEN;
SET GENERATOR CF_PRICP_GEN TO 3;
CREATE GENERATOR OS_DOKKL_GEN;
SET GENERATOR OS_DOKKL_GEN TO 24;
CREATE GENERATOR OS_KALEND;
SET GENERATOR OS_KALEND TO 0;
CREATE GENERATOR PS_FS_GEN;
SET GENERATOR PS_FS_GEN TO 3;
CREATE GENERATOR PS_KRUK_GEN;
SET GENERATOR PS_KRUK_GEN TO 163;
CREATE GENERATOR PS_POD_GEN;
SET GENERATOR PS_POD_GEN TO 31;
/***************************************************************************/
/*** Exceptions ***/
/***************************************************************************/
CREATE EXCEPTION ERWIN_CHILD_DELETE_RESTRICT 'Cannot DELETE Child table because Parent table does not exist.';
CREATE EXCEPTION ERWIN_CHILD_INSERT_RESTRICT 'Cannot INSERT Child table because Parent table does not exist.';
CREATE EXCEPTION ERWIN_CHILD_UPDATE_RESTRICT 'Cannot UPDATE Child table because Parent table does not exist.';
CREATE EXCEPTION ERWIN_PARENT_DELETE_RESTRICT 'Cannot DELETE Parent table because Child table exists.';
CREATE EXCEPTION ERWIN_PARENT_INSERT_RESTRICT 'Cannot INSERT Parent table because Child table exists.';
CREATE EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT 'Cannot UPDATE Parent table because Child table exists.';
SET TERM ^ ;
/***************************************************************************/
/*** Tables ***/
/***************************************************************************/
CREATE TABLE CF_KVR (
TABN VARCHAR6 NOT NULL,
DAT_KOR DATE NOT NULL,
NAIM_KVR V40 NOT NULL,
K_KVR N1 NOT NULL
);
CREATE TABLE CF_KWORC (
N_KWORK NUMBER9_TYPE NOT NULL,
N_LIST NUMBER3_TYPE,
N_DOC VARCHAR40_TYPE,
DAT_ZAKR DATE,
SR_ISP DATE,
DAT_POST DATE,
KR_SOD VARCHAR100_TYPE,
N_PUNKT VARCHAR6_TYPE,
DAT_DOC DATE,
TAB_N VARCHAR40_TYPE,
DAT_KOR DATE,
LIT VARCHAR40_TYPE NOT NULL,
K_KVR NUMBER1_TYPE NOT NULL,
PR_ISP NUMBER1_TYPE NOT NULL,
ID_OS_DOKK NUMBER9_TYPE NOT NULL,
ID_PS_POD VARCHAR6_TYPE NOT NULL,
ID_PS_KRUK N NUMBER9_TYPE NOT NULL
);
CREATE TABLE CF_LITER (
TABN VARCHAR6_TYPE,
DAT_KOR DATE,
NAIM_LIT VARCHAR100_TYPE,
LIT VARCHAR40_TYPE
);
CREATE TABLE CF_OLDW (
TABN VARCHAR6_TYPE,
DAT_KOR DATE,
DAT_DOC DATE,
N_DOC VARCHAR40_TYPE,
DAT_OLDW DATE,
ID_CF_OLDW NUMBER9_TYPE NOT NULL,
K_PRI_PER NUMBER9_TYPE NOT NULL,
N_KWORK NUMBER9_TYPE NOT NULL
);
CREATE TABLE CF_PRI (
TABN VARCHAR6_TYPE,
DAT_KOR VARCHAR6_TYPE,
S_PRI_PER VARCHAR100_TYPE,
K_PRI_PER NUMBER3_TYPE
);
CREATE TABLE CF_PRICP (
PR_ISP NUMBER1_TYPE NOT NULL,
TABN VARCHAR6_TYPE,
DAT_KOR DATE,
NAIM_PRISP NUMBER1_TYPE
);
CREATE TABLE OS_DOKKL (
K_DOC VARCHAR6_TYPE,
NAIM_DOC VARCHAR40_TYPE,
ID_OS_DOKK NUMBER9_TYPE NOT NULL
);
CREATE TABLE OS_KALEND (
N_DAY NUMBER3_TYPE,
ID_OS_KALE NUMBER9_TYPE NOT NULL,
ID_OS_ORGL NUMBER9_TYPE,
PR_DAY NUMBER1_TYPE,
DATA DATE,
GOD NUMBER(4),
N_MES NUMBER(2)
);
CREATE TABLE PS_FS (
NAIM_FS VARCHAR40_TYPE,
KS_FS VARCHAR(3),
ID_PS_ES NUMBER9_TYPE NOT NULL
);
CREATE TABLE PS_KRUK (
NAIM_KDOL VARCHAR40_TYPE,
K_DOP VARCHAR40_TYPE,
OTCH VARCHAR40_TYPE,
IMYA VARCHAR40_TYPE,
FAM VARCHAR40_TYPE,
TABN VARCHAR6_TYPE,
KSP VARCHAR(3),
ID_PS_KRUK NUMBER9_TYPE NOT NULL
);
CREATE TABLE PS_POD (
PRAN V1,
NAIM_KSP VARCHAR100_TYPE,
KSP VARCHAR(3),
ID_PS_POD VARCHAR40_TYPE NOT NULL,
KS_FS VARCHAR(3) NOT NULL
);
/***************************************************************************/
/*** Primary Keys ***/
/***************************************************************************/
ALTER TABLE CF_OLDW ADD CONSTRAINT XPKE_4 PRIMARY KEY (ID_CF_OLDW, N_KWORK);
ALTER TABLE CF_PRICP ADD CONSTRAINT XPKE_2 PRIMARY KEY (PR_ISP);
ALTER TABLE OS_DOKKL ADD CONSTRAINT XPKE_11 PRIMARY KEY (ID_OS_DOKK);
ALTER TABLE OS_KALEND ADD CONSTRAINT XPKE_12 PRIMARY KEY (ID_OS_KALE);
ALTER TABLE PS_KRUK ADD CONSTRAINT XPKPS_KRUK PRIMARY KEY (ID_PS_KRUK);
ALTER TABLE PS_POD ADD CONSTRAINT XPKE_8 PRIMARY KEY (ID_PS_POD);
ALTER TABLE CF_KWORC ADD CONSTRAINT XPKE_12 PRIMARY KEY (N_KWORK);
ALTER TABLE CF_KVR ADD CONSTRAINT XPKPS_KRUK PRIMARY KEY (K_KVR);
ALTER TABLE CF_PRI ADD CONSTRAINT XPKE_8 PRIMARY KEY (K_PRI_PER );
/***************************************************************************/
/*** Foreign Keys ***/
/***************************************************************************/
ALTER TABLE CF_KWORC ADD CONSTRAINT ISPOLZUYUT FOREIGN KEY (ID_PS_KRUK) REFERENCES PS_KRUK (ID_PS_KRUK);
ALTER TABLE CF_KWORC ADD CONSTRAINT OTMECHAETSYA_V FOREIGN KEY (PR_ISP) REFERENCES CF_PRICP (PR_ISP);
ALTER TABLE CF_KWORC ADD CONSTRAINT UKAZIVAYUTSYA FOREIGN KEY (ID_OS_DOKK) REFERENCES OS_DOKKL (ID_OS_DOKK);
ALTER TABLE CF_KWORC ADD CONSTRAINT VHODIT FOREIGN KEY (ID_PS_POD) REFERENCES PS_POD (ID_PS_POD);
/***************************************************************************/
/*** Triggers ***/
/***************************************************************************/
SET TERM ^ ;
/***************************************************************************/
/**** Triggers for tables ****/
/***************************************************************************/
/* Trigger: TD_CF_KVR */
CREATE TRIGGER TD_CF_KVR FOR CF_KVR
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on CF_KVR */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_KVR указывается для CF_KWORC ON PARENT DELETE CASCADE */
delete from CF_KWORC
where
/* CF_KWORC.K_KVR = OLD.K_KVR */
CF_KWORC.K_KVR = OLD.K_KVR;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_CF_KWORC */
CREATE TRIGGER TD_CF_KWORC FOR CF_KWORC
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on CF_KWORC */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_KWORC содержат CF_OLDW ON PARENT DELETE RESTRICT */
select count(*)
from CF_OLDW
where
/* CF_OLDW.N_KWORK = OLD.N_KWORK */
CF_OLDW.N_KWORK = OLD.N_KWORK into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_DELETE_RESTRICT;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_CF_LITER */
CREATE TRIGGER TD_CF_LITER FOR CF_LITER
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on CF_LITER */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_LITER соответствует CF_KWORC ON PARENT DELETE CASCADE */
delete from CF_KWORC
where
/* CF_KWORC.LIT = OLD.LIT */
CF_KWORC.LIT = OLD.LIT;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_CF_PRI */
CREATE TRIGGER TD_CF_PRI FOR CF_PRI
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on CF_PRI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_PRI отмечается в CF_OLDW ON PARENT DELETE CASCADE */
delete from CF_OLDW
where
/* CF_OLDW.K_PRI_PER = OLD.K_PRI_PER */
CF_OLDW.K_PRI_PER = OLD.K_PRI_PER;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_CF_PRICP */
CREATE TRIGGER TD_CF_PRICP FOR CF_PRICP
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on CF_PRICP */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_PRICP отмечается в CF_KWORC ON PARENT DELETE CASCADE */
delete from CF_KWORC
where
/* CF_KWORC.PR_ISP = OLD.PR_ISP */
CF_KWORC.PR_ISP = OLD.PR_ISP;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_OS_DOKKL */
CREATE TRIGGER TD_OS_DOKKL FOR OS_DOKKL
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on OS_DOKKL */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* OS_DOKKL указываются в CF_KWORC ON PARENT DELETE CASCADE */
delete from CF_KWORC
where
/* CF_KWORC.ID_OS_DOKK = OLD.ID_OS_DOKK */
CF_KWORC.ID_OS_DOKK = OLD.ID_OS_DOKK;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_PS_FS */
CREATE TRIGGER TD_PS_FS FOR PS_FS
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on PS_FS */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* PS_FS содержат PS_POD ON PARENT DELETE CASCADE */
delete from PS_POD
where
/* PS_POD.KS_FS = OLD.KS_FS */
PS_POD.KS_FS = OLD.KS_FS;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_PS_KRUK */
CREATE TRIGGER TD_PS_KRUK FOR PS_KRUK
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on PS_KRUK */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* PS_KRUK используется CF_KWORC ON PARENT DELETE CASCADE */
delete from CF_KWORC
where
/* CF_KWORC.ID_PS_KRUK = OLD.ID_PS_KRUK */
CF_KWORC.ID_PS_KRUK = OLD.ID_PS_KRUK;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TD_PS_POD */
CREATE TRIGGER TD_PS_POD FOR PS_POD
ACTIVE AFTER DELETE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* DELETE trigger on PS_POD */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* PS_POD входит CF_KWORC ON PARENT DELETE CASCADE */
delete from CF_KWORC
where
/* CF_KWORC.ID_PS_POD = OLD.ID_PS_POD */
CF_KWORC.ID_PS_POD = OLD.ID_PS_POD;
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_CF_KVR */
CREATE TRIGGER TU_CF_KVR FOR CF_KVR
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on CF_KVR */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_KVR указывается для CF_KWORC ON PARENT UPDATE CASCADE */
IF
/* OLD.K_KVR <> NEW.K_KVR */
(OLD.K_KVR <> NEW.K_KVR) THEN
BEGIN
update CF_KWORC
set
/* CF_KWORC.K_KVR = NEW.K_KVR */
CF_KWORC.K_KVR = NEW.K_KVR
where
/* CF_KWORC.K_KVR = OLD.K_KVR */
CF_KWORC.K_KVR = OLD.K_KVR;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_CF_KWORC */
CREATE TRIGGER TU_CF_KWORC FOR CF_KWORC
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on CF_KWORC */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_KWORC содержат CF_OLDW ON PARENT UPDATE RESTRICT */
IF
/* OLD.N_KWORK <> NEW.N_KWORK */
(OLD.N_KWORK <> NEW.N_KWORK) THEN
BEGIN
select count(*)
from CF_OLDW
where
/* CF_OLDW.N_KWORK = OLD.N_KWORK */
CF_OLDW.N_KWORK = OLD.N_KWORK into numrows;
IF (numrows > 0) THEN
BEGIN
EXCEPTION ERWIN_PARENT_UPDATE_RESTRICT;
END
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_CF_LITER */
CREATE TRIGGER TU_CF_LITER FOR CF_LITER
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on CF_LITER */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_LITER соответствует CF_KWORC ON PARENT UPDATE CASCADE */
IF
/* OLD.LIT <> NEW.LIT */
(OLD.LIT <> NEW.LIT) THEN
BEGIN
update CF_KWORC
set
/* CF_KWORC.LIT = NEW.LIT */
CF_KWORC.LIT = NEW.LIT
where
/* CF_KWORC.LIT = OLD.LIT */
CF_KWORC.LIT = OLD.LIT;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_CF_PRI */
CREATE TRIGGER TU_CF_PRI FOR CF_PRI
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on CF_PRI */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_PRI отмечается в CF_OLDW ON PARENT UPDATE CASCADE */
IF
/* OLD.K_PRI_PER <> NEW.K_PRI_PER */
(OLD.K_PRI_PER <> NEW.K_PRI_PER) THEN
BEGIN
update CF_OLDW
set
/* CF_OLDW.K_PRI_PER = NEW.K_PRI_PER */
CF_OLDW.K_PRI_PER = NEW.K_PRI_PER
where
/* CF_OLDW.K_PRI_PER = OLD.K_PRI_PER */
CF_OLDW.K_PRI_PER = OLD.K_PRI_PER;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_CF_PRICP */
CREATE TRIGGER TU_CF_PRICP FOR CF_PRICP
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on CF_PRICP */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* CF_PRICP отмечается в CF_KWORC ON PARENT UPDATE CASCADE */
IF
/* OLD.PR_ISP <> NEW.PR_ISP */
(OLD.PR_ISP <> NEW.PR_ISP) THEN
BEGIN
update CF_KWORC
set
/* CF_KWORC.PR_ISP = NEW.PR_ISP */
CF_KWORC.PR_ISP = NEW.PR_ISP
where
/* CF_KWORC.PR_ISP = OLD.PR_ISP */
CF_KWORC.PR_ISP = OLD.PR_ISP;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_OS_DOKKL */
CREATE TRIGGER TU_OS_DOKKL FOR OS_DOKKL
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on OS_DOKKL */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* OS_DOKKL указываются в CF_KWORC ON PARENT UPDATE CASCADE */
IF
/* OLD.ID_OS_DOKK <> NEW.ID_OS_DOKK */
(OLD.ID_OS_DOKK <> NEW.ID_OS_DOKK) THEN
BEGIN
update CF_KWORC
set
/* CF_KWORC.ID_OS_DOKK = NEW.ID_OS_DOKK */
CF_KWORC.ID_OS_DOKK = NEW.ID_OS_DOKK
where
/* CF_KWORC.ID_OS_DOKK = OLD.ID_OS_DOKK */
CF_KWORC.ID_OS_DOKK = OLD.ID_OS_DOKK;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_PS_FS */
CREATE TRIGGER TU_PS_FS FOR PS_FS
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on PS_FS */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* PS_FS содержат PS_POD ON PARENT UPDATE CASCADE */
IF
/* OLD.KS_FS <> NEW.KS_FS */
(OLD.KS_FS <> NEW.KS_FS) THEN
BEGIN
update PS_POD
set
/* PS_POD.KS_FS = NEW.KS_FS */
PS_POD.KS_FS = NEW.KS_FS
where
/* PS_POD.KS_FS = OLD.KS_FS */
PS_POD.KS_FS = OLD.KS_FS;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_PS_KRUK */
CREATE TRIGGER TU_PS_KRUK FOR PS_KRUK
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on PS_KRUK */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* PS_KRUK используется CF_KWORC ON PARENT UPDATE CASCADE */
IF
/* OLD.ID_PS_KRUK <> NEW.ID_PS_KRUK */
(OLD.ID_PS_KRUK <> NEW.ID_PS_KRUK) THEN
BEGIN
update CF_KWORC
set
/* CF_KWORC.ID_PS_KRUK = NEW.ID_PS_KRUK */
CF_KWORC.ID_PS_KRUK = NEW.ID_PS_KRUK
where
/* CF_KWORC.ID_PS_KRUK = OLD.ID_PS_KRUK */
CF_KWORC.ID_PS_KRUK = OLD.ID_PS_KRUK;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
/* Trigger: TU_PS_POD */
CREATE TRIGGER TU_PS_POD FOR PS_POD
ACTIVE AFTER UPDATE POSITION 0
AS
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* UPDATE trigger on PS_POD */
DECLARE VARIABLE numrows INTEGER;
BEGIN
/* ERwin Builtin Tue May 13 16:08:07 2008 */
/* PS_POD входит CF_KWORC ON PARENT UPDATE CASCADE */
IF
/* OLD.ID_PS_POD <> NEW.ID_PS_POD */
(OLD.ID_PS_POD <> NEW.ID_PS_POD) THEN
BEGIN
update CF_KWORC
set
/* CF_KWORC.ID_PS_POD = NEW.ID_PS_POD */
CF_KWORC.ID_PS_POD = NEW.ID_PS_POD
where
/* CF_KWORC.ID_PS_POD = OLD.ID_PS_POD */
CF_KWORC.ID_PS_POD = OLD.ID_PS_POD;
END
/* ERwin Builtin Tue May 13 16:08:07 2008 */
END
^
SET TERM ; ^
3. Модуль «Ввод новой карточки»
if used('kaldat')
sele kaldat
use
endi
dat_dok1=ctod(thisform.text6.value)
sr_isp1=ctod(thisform.text13.value)
dat_post1=date()
zz=trim(thisform.edit1.value)
coli=0
coli=len(zz)
do case
case isnull(thisform.text14.value) or empty(thisform.text14.value)
=messageb('Не определен ответственный за контроль!',48,'Ввод невозможен')
case (isnull(thisform.text10.value) or empty(thisform.text10.value)) and (isnull(thisform.text11.value) or empty(thisform.text11.value))
=messageb('Не определен исполнитель!',48, 'Ввод невозможен')
case isnull(thisform.text2.value) or empty(thisform.text2.value)
=messageb('Не определен код категории важности!',48, 'Ввод невозможен')
case isnull(thisform.text4.value)
=messageb('Не определен код документа!',48, 'Ввод невозможен')
case isnull(thisform.text1.value)
=messageb('Не определен номер документа!',48, 'Ввод невозможен')
case isnull(thisform.edit1.value) or empty(thisform.edit1.value)
=messageb('Не определено краткое содержание!',48, 'Ввод невозможен')
thisform.edit1.setfocus
case isnull(thisform.text12.value) or empty(thisform.text12.value)
=messageb('Не определен ответственный за контроль!',48, 'Ввод невозможен')
case isnull(thisform.text13.value) or empty(thisform.text13.value)
=messageb('Не определен срок исполнения!',48, 'Ввод невозможен')
case isnull(thisform.text6.value) or empty(thisform.text6.value)
=messageb('Не определена дата издания документа!',48, 'Ввод невозможен')
case dat_dok1>dat_post1
=messageb('Дата документа больше текущей даты!',48, 'Ввод невозможен')
thisform.text6.setfocus
case dat_post1>=sr_isp1
=messageb('Срок исполнения меньше или равен текущей дате!',48, 'Ввод невозможен')
thisform.text13.setfocus
case (isnull(thisform.text10.value) and isnull(thisform.text11.value)) or (empty(thisform.text10.value) and empty(thisform.text11.value))
=messageb('Не определен исполнитель!',48, 'Ввод невозможен')
case coli>100
=messageb('Количество символов в СОДЕРЖАНИИ больше допустимого!',48, 'Ввод невозможен')
thisform.edit1.setfocus
otherwise
z1="'"+alltrim(str(kart,9))+"'" && номер карточки
z2="'"+"1"+"'" && признак исполнения
z3="'"+alltrim(thisform.text2.value)+"'" && код категории важности
z4="'"+alltrim(str(aid_os_dokkl,9))+"'" && номер записи кода документа
z5="'"+alltrim((thisform.text1.value))+"'" && номер документа
z6="'"+alltrim(thisform.text6.value)+"'" && дата документа
if isnull(thisform.text7.value)=.f.
z7="'"+alltrim(thisform.text7.value)+"'" && номер пункта
endi
* z8="'"+alltrim(thisform.edit1.value)+"'" && краткое содержание
z8=alltrim(thisform.edit1.value)
* if aid_ps_kruk<>0
if !empty(aid_ps_kruk)
* z9="'"+alltrim(str(aid_ps_pod,9))+"'"
z10="'"+alltrim(str(aid_ps_kruk,9))+"'"
z9="''" && номер записи подразделения
else
z10="''"
z9="'"+alltrim(str(aid_ps_pod,9))+"'"
endi
z11="'"+alltrim(str(aid_ps_kruko))+"'" && номер записи ответственного за контроль
z12="'"+alltrim(dtoc(datar1))+"'" && дата постановки на контроль
z13="'"+alltrim((thisform.text13.value))+"'" && срок исполнения
z14="'"+alltrim(dtoc(date()))+"'" && дата и время корректировки
z15="'"+tabn_s+"'" && табельный номер корректировавшего
srok=ctod(thisform.text13.value)
select pr_day as priznak from aos_kalend where dat_kalend=srok and id_os_orglev=1 into cursor kaldat
if KALDAT.priznak<>0
=messageb('Срок исполнения - выходной, праздничный или предпраздничный день!',48, 'Ввод невозможен')
thisform.text13.setfocus
else
p_oisk=1
* thisform.text10.value=''
thisform.text11.value=''
thisform.text12.value=''
dok_10='%'
dok_11='%'
dok_12='%'
thisform.combo1.requery
thisform.combo2.requery
thisform.combo3.requery
a=sqlexec(hd,"insert into cf_kwork(n_kwork,pr_isp,k_kvr,id_os_dokkl,n_dok,dat_dok,"+;
"n_punkt,kr_sod,id_ps_pod,id_ps_kruk,id_ps_kruko,dat_post,sr_isp,dat_kor,tabn)"+;
"values(&z1,&z2,&z3,&z4,&z5,&z6,&z7,?z8,&z9,&z10,&z11,&z12,&z13,&z14,&z15)")
IF a<0
wait window 'ОШИБКА ПРИ добавлении записи !!! НАЖМИТЕ ENTER'
=aerr(aerrors)
local ae1,ae2
ae2=atc(':',aErrors[1,3])
if ae2#0
ae1=substr(aErrors[1,3],ae2+1)
else
ae1=aErrors[1,3]
endi
=MESSAGEBOX('Ошибка выполнения при записи.'+chr(13)+ae1,48,'Ошибка¹ : '+str(aErrors[1,1],6))
as=aerr(asd)
else
thisform.refresh
do form vvod.scx
endi
endi
endc