Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DIPP.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.8 Mб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«Рязанский государственный радиотехнический университет» Кафедра автоматизированных систем управления

Утвержден

ДП-02069154-230201-03-08

«Разработка информационной системы контроля исполнения распорядительных документов»

Текст программы

ДП-02069154-230201-03-08

Листов ??

Аннотация

В данном приложении представлены тексты основных модулей для создания клиентского приложения системы контроля исполнения распорядительных документов предприятия, а также листинг создания основных объектов БД.

СОДЕРЖАНИЕ

  1. Приложение А. Листинг команд создания основных объектов базы данных

  2. Приложение Г. Текст программы-------129

    1. Основная программа BlagoProject.dpr---------------------------130

    2. Модуль MainFormUnit.pas---------------------------------------------130

    3. Модуль PrMerFormUnit.pas-----------------------------------------------133

    4. Модуль PrNapFormUnit.pas---------------------------------------------135

    5. Модуль PrOrgUnit.pas-------------------------------------------------------137

    6. Модуль WedNalihFormUnit.pas-------------------------------------------139

    7. Модуль WedomUnit.pas--------------------------------------------------145

    8. Модуль 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

47

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]