Автоматизированная информационная система обработки данных учета пенсионных начислений и компенсаций ЦСО Военного комиссариата Курской области
Проектирование автоматизированной информационной системы обработки данных учета пенсионных начислений и компенсаций ЦСО Военного комиссариата Курской области. Анализ возможностей использования решений на базе Microsoft Dynamics AX (Microsoft Axapta).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 12.11.2013 |
Размер файла | 5,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
От людей
Всего
Количество наружного воздуха, необходим. для дыхания
1
2
0,3
6,811
0,3
7,4
120
3
2
0,3
0,436
0,3
1,0
120
4
2
0,3
0,545
0,3
1,1
120
5
5
1,5
0,672
0,75
2,9
300
6
2
0,3
1,942
0,3
2,5
120
?
15,1
е) Влаговыделения
Определяется по формуле:
, кг/ч
где Wi - влаговыделения одним человеком г/ч; ni- число людей в помещении.
Также добавляют 1,5 кг/ч на влажную уборку помещения, принимаемую один раз в день.
Таблица 5.5 - Итоги расчета теплового баланса
№ Помещения |
1 |
3 |
4 |
5 |
6 |
уборка |
? |
|
Кол-во людей |
2 |
2 |
2 |
5 |
2 |
- |
13 |
|
Влаговыделения ТП |
0,15 |
0,15 |
0,15 |
0,375 |
0,15 |
1,5 |
2,48 |
|
Влаговыделения ХП |
0,13 |
0,13 |
0,13 |
0,325 |
0,13 |
1,5 |
2,35 |
5.2 Построение в Id диаграмме процессов обработки воздуха в теплый и холодный период года
5.2.1 Расчет производительности СКВ
а) ТП (Теплый период)
1. Определяем угловой коэффициент луча процесса:
2. Находим температуры приточного и удаляемого воздуха:
Строим на Id- диаграмме луч процесса, через точку В и наносим точки П, У, соответствующие найденным температурам.
3. Определяем необходимый воздухообмен.
Определяем воздухообмен по полному тепловыделению:
Определяем теплообмен по явному тепловыделению:
Определяем воздухообмен по влаговыделению:
Затем на поле I-d диаграммы наносим линию dП= const, по которой находим положение точек П' и О, характеризующих состояние воздуха на выходе из кондиционера и из камеры орошения.
б) ХП (Холодный период)
1. Определяем угловой коэффициент луча процесса:
2. Находим температуры приточного и удаляемого воздуха:
Строим на Id- диаграмме луч процесса, через точку В и наносим точки П, У, соответствующие найденным температурам.
3. Определяем необходимый воздухообмен.
Определяем воздухообмен по полному тепловыделению:
Определяем теплообмен по явному тепловыделению:
Определяем воздухообмен по влаговыделению:
Затем на поле I-d диаграммы наносим линию dП= const, по которой находим положение точек П и О, характеризующих состояние воздуха на выходе из кондиционера и из камеры орошения.
5.2.2 Расчет количества тепла для подогревателей 1-ого и 2-ого подогрева
Выбираем максимальный воздухообмен с запасом 5% = 10675*5%=11200 кг/ч,
Мощность воздухоподогревателя I ступени - 135 кВт
Мощность воздухоподогревателя II ступени- 28 кВт
Для теплого периода, судя по диаграмме подогревателей II подогрева не понадобится, воздух с температуры 140С нагреется до расчетной внутренней за счет теплоизбытков в помещении:
= 20 кВт
5.2.3 Расчет количества холода в воздухоохладителях для летнего периода
Расход холода для осуществления процесса охлаждения и осушки воздуха:
производительность СКВ должна равняться 45 кВт
5.2.4 Расчет количества воды, испарившейся в оросительной камере
Расход влаги на испарение в камере орошения:
ХП:
5.3 Выбор типоразмера кондиционера и расчет его секций
Расчетный воздухообменG = 11200 кг/ч =>L = 9300 м3/ч.
По расчетному воздухообмену принимаем центральный кондиционер КТЦ 2А-10
5.3.1 Расчет и подбор воздухонагревателей
Задача расчета воздухонагревателя заключается в выборе поверхности воздухонагревателя с запасом 10%
Исходя из доступного перепада температур, вычисляют расход горячей воды, кг/ч;
Средний арифметический температурный напор в воздухонагревателе, 0С;
Вычисляют массовую скорость в живом сечении Vp, кг/(м2•с);
где G- расход воздуха через сечение теплообменника, кг/ч;
- площадь сечения для прохода воздуха
Скорость течения воды:
Требуемая площадь поверхности воздухонагревателя, м2;
где К- коэффициент теплопередачи, Вт/ (м2•с)
С- коэффициент для двухрядных -16,86; однорядных- 15,6.
Расчет I ступени подогрева воздуха:
Запас +10% = 51,66м2;51,66/2 = 25,83
Принимаем 2 двухрядных теплообменника высотой 1метр с площадью 25,9 м2 каждый с обводным каналом ВНО. Индекс 01.11213
Расчет II ступени подогрева воздуха:
Принимаем 1 однорядный теплообменник высотой 1,25 с площадью 16,35 м2 без обводного канала ВН. Индекс 01.10113
5.3.2 Расчет камер орошения
В задачу расчета оросительной камеры для теплого периода входит выбор типа камеры орошения, определения давления и расхода воды, а также ее начальной и конечной температуры. В холодный период для выбранной по условиям теплового режима форсуночной камеры находят расход и давление воды перед форсунками.
а)Расчет для теплого периода
По расходу воздуха G=11200задаются типом камеры и числом форсунок nф. По диаграмме в зависимости от конечной и начальной относительной влажности обрабатываемого в камере орошения воздуха определяют давление перед форсунками РФ. Оно составит 120 кПа. Для этого значения расход воды через форсункуgф составит 420 кг/ч.
Выбираем для кондиционера КТЦ 2А-10 с общим числом форсунок - 42. (Исполнение 1).
Общий расход воды через форсунки составит:
Определяем коэффициент орошения:
По значению коэффициента орошения определяют достижимое значение = 0,57
Энтальпия насыщенного воздуха при начальной температуре воды, кДж/кг:
На Id диаграмме на пересечении линии Iwн с линией полного насыщения (ц=100%), находят требуемую начальную температуру воды twн и вычисляют конечную температуру воды. Температура воды перед форсункой составит tm=7,70С.
б) Расчет для холодного периода
По Id- диаграмме находят начальные и конечные параметры воздуха и температуру мокрого термометра.
Вычисляем требуемый показатель эффективности режима изоэнтальпийного увлажнения воздуха Eа, по которому определяется коэффициент орошения В и вычисляют расход воды.
По таблице найдем В= 1,55
Вычисляем производительность одной форсунки:
По значению находим необходимое давление воды перед форсунками РФ, оно составит 115 кПа.
Принимаем камеру орошения Индекс 01.01300 исполнение 1
5.4 Холодоснабжение СКВ
Так как охлаждение воздуха происходит в оросительной камере, подготовка оборотной воды осуществляется в испарителе холодильной установки. Расчет холода для охлаждения в чиллере воды из оросительной камеры производится по уравнению:
Подбираем чиллер серии WRAT182, Холодопроизводительностью 47,9 кВт
Мощность потребляемая компрессором- 14,4 кВт
Тип компрессора- Поршневой
Напряжение питания компрессора- 380-415/3/50+N
Число герм. компрессоров (охл. контуров) - 2/2
Осевые вентиляторы с установочной мощностью- 2Ч0,32 кВт
Общая производительность по воздуху - 4,16 м3/с
Транспортная масса- 430 кг.
Длина- 1642 мм.
Глубина- 954 мм.
Высота- 1570 мм.
Принимаем объем аккумулирующего бака 150LЧ GPA 150
Потребный расход воды определяется холодопроизводительностью чиллера и расчетным перепадом температур на входе и выходе чиллера и рассчитывается по формуле:
где Q- холодопроизводительность чиллера, кВт
- перепад температур на чиллере (5-6 0С)
Потребный напор насосной станции складывается из следующих потерь:
1) Потери в теплообменнике чиллера (+50% к потерям в трубопроводе, от бака к чиллеру и обратно.
2) Потери в самой насосной станции и потери на соединениях между чиллером и насосной станцией.
3) Потери в сети (трубопроводах, арматуре)
По номограмме подбираем диаметр50 мм, задавшись скоростью 1,5 м/с, и расходом 6,84 м3/ч, потери давления составят 420 Па/м
Длина трубопровода5м, Ртр= 2100 Па + Рм = 3000 Па
Полные потери составят +50 = 3000*1,5= 4500 Па.
По каталогу принимаем насостипа АЦКМ 65-40-180
n= 1500 мин-1, КПД = 70%,
5.5 Аэродинамический расчет СКВ
Цель аэродинамического расчета системы- это определение размеров сечений всех участков системы при заданных расходах воздуха через них, а также потерь давления на отдельных участках и в системе в целом.
5.5.1 Выбор схемы распределения воздуха в помещении
Приточные решетки располагаем в помещении снизу, подача воздуха происходит по воздуховодам, расположенным в подвале здания, вытяжка происходит через воздуховоды, проложенные на чердаке здания.
Установив в помещении место расположения приточных и вытяжных решеток необходимо предварительно определить их размеры.
Площадь живого сечения вытяжных и приточных решеток:
Vрек- рекомендуемая скорость в решетках, не более 6 м/с
После подбора решетки определяют расчетную скорость на выходе из решетки.
Таблица 5.6 - Результаты воздухообменов и подбор решеток
№ помещения |
Расход L, м3/ч |
Площадь Fрасч |
Кол-во |
Размеры, мм |
Площадь живого сечения,м2 |
Скорость |
|
приточные решетки |
|||||||
1 |
4900 |
0,247 |
2 |
200Ч800 |
0,266 |
5,1 |
|
3 |
560 |
0,028 |
1 |
150Ч600 |
0,072 |
2,2 |
|
4 |
600 |
0,030 |
1 |
150Ч600 |
0,072 |
2,3 |
|
5 |
1350 |
0,068 |
1 |
200Ч800 |
0,133 |
2,8 |
|
6 |
1900 |
0,096 |
1 |
200Ч800 |
0,133 |
4,0 |
|
вытяжные решетки |
|||||||
1 |
4400 |
0,222 |
2 |
200Ч800 |
0,266 |
4,6 |
|
3 |
500 |
0,025 |
1 |
150Ч600 |
0,072 |
1,9 |
|
4 |
540 |
0,027 |
1 |
150Ч600 |
0,072 |
2,1 |
|
5 |
1200 |
0,061 |
1 |
200Ч800 |
0,133 |
2,5 |
|
6 |
1700 |
0,086 |
1 |
200Ч800 |
0,133 |
3,6 |
Расходы на притоки и вытяжке подбираем по теплоизбыткам в данных комнатах и с учетом воздушного подпора на притоке порядка 10%, который предусмотрен для исключения подсасывания воздуха из не кондиционируемых помещений.
5.5.2 Подбор диаметров воздуховодов и расчет потерь давления
Подбор диаметров воздуховодов сведен в таблицу 5.7 для приточной системы и таблицу 5.8 для вытяжной системы.
Таблица 5.7 - Аэродинамический расчет приточной системы
Таблица 5.8 - Аэродинамический расчет вытяжной системы
5.5.3 Подбор вентилятора
Для приточной системы
Вентилятор подбирается по двум параметрам:
L= 9300 м3/ч
P=509,3+120+37+60+200= 926 Па
Требуемое давление, развиваемое вентилятором
Pтр= 1кПа
Технические характеристика вентилятора:
индекс: 01.41430
Полное давление 1,6 кПа
Номинальная производительность 12,5 тыс. м3/ч
Частота вращения 1440 об/мин
Электродвигатель 4А132М4, мощность 11 кВт.
Для вытяжной системы
L= 8340 м3/ч
P= 536 кПа
Требуемое давление Pтр= 0,6 кПа.
Технические характеристики вентилятора: индекс: 01.41330
Полное давление 1,1 кПа
Номинальная производительность 12,5 тыс. м3/ч
Частота вращения 1440 об/мин
Электродвигатель 4А132М4, мощность 7,5 кВт.
Выводы по главе
Проведение расчета системы вентиляции кондиционирования офисного помещения Центра Социального Обеспечения было осуществлено по пяти направлениям:
1. Рассчитано поступление тепла и влаги в помещение серверной.
2. Построены в ID диаграмме процессы обработки воздуха в теплый и холодный периоды года.
3. Выбран типоразмер кондиционера и рассчитаны его секции.
4. Рассчитано холодоснабжение СКВ.
5. Проведен аэродинамический расчет СКВ.
Таким образом расчет системы вентиляции и кондиционирования офисного помещения Центра Социального Обеспечения доказал свою важность для офисных помещений предприятий.
Выводы
В ходе выполнения выпускной квалификационной работы были выполнены следующие задачи:
Проведен анализ типовых программных решений для учета данных в системах начисления военный пенсий. Анализ показал, что универсального автоматизированного модуля не существует, оценив все преимущества и недостатки существующих платформ, было принято решение о переводе на современную windows-платформу существующей системы с использованием СУБД Microsoft® Visual FoxPro 9.0 Professional SP2.
Проведен обзор программного обеспечения, используемого в ЦСО ВККО. Обзор показал, что система устарела до критического уровня, она не способна поддерживать современные технологии, дальнейшие мероприятия по поддержке и обновлению системы нецелесообразны.
Разработано программное обеспечение управления таблицами данных в автоматизированной информационной системе формирования отчетных данных реестра по начислению пенсионных выплат и компенсаций ЦСО Военного комиссариата Курской области. В ходе разработки была сформирована база данных проекта, включающая в себя пять таблиц. Для удобства доступа к данным таблиц были созданы стандартные экранные формы.
Выполнено тестирование разработанного приложения. Результаты тестирования показали, что индексные связи работают и целостность базы данных не нарушается, контроль за соответствием типов данных соблюдается.
Выполнен расчет системы кондиционирования офисного помещения ЦСО. Расчет системы вентиляции и кондиционирования офисного помещения Центра Социального Обеспечения доказал свою важность для офисных помещений предприятий.
Осуществлен перевод существующей системы «Pension» на новую платформу MSVFP с сохранением формата данных и обеспечена целостность данных таблиц.
Все поставленные задачи выпускной квалификационной работы выполнены, цель достигнута.
Библиографический список
1. Басаков М. И. Современное делопроизводство: учебное пособие для вузов / М. И. Басаков. - Ростов н/Д : Феникс, 2007. - 480с
Винокуров М.А. , Гутгарц Р.Д., Пархомов В.А. Автоматизация кадрового учета: Учеб. пособие. - М.:изд-во «Инфра», 2001. - 325 с.
2. Радченко М.Г. (фирма "1С) "1С:Предприятие 8.2. Коротко о главном. Новые возможности версии 8.2", изд-во ООО "1С-Паблишинг", 2009г.-416 с.
3. Гончаров Д. И., Хрусталева Е. Ю. "Технологии интеграции 1С:Предприятия 8.2", "1С-Паблишинг", 2011г. - 358 с.
4. Габец А.П., Д.В. Козырев, Д.С. Кухлевский, Е.Ю. Хрусталева, «Реализация прикладных задач в системе "1С:Предприятие 8.2", "1С-Паблишинг", 2010г. - 714 с.
5. Мансурова Н.А., Веселов П.С. Предпосылки и этапы внедрения системы электронного документооборота в сфере малого и среднего бизнеса // Экономические исследования. 2010г.
6. В. Корепин, Microsoft Dynamics AX 2009. Руководство пользователя. Том 1, Эком, 2010г. - 1520с.
7. В. Корепин, Microsoft Dynamics AX 2009. Руководство пользователя. Том 1, ЭКОМ Паблишерз, 2010г. - 1632с.
8. Артур Гриф, Майкл Фрюргаард Понтоппидан, Ларс Драгхейм Олсен, перев. С. Чернятинский, Microsoft Dynamics AX 4.0, ЭКОМ Паблишерз, 2008г. - 608с.
9. Сухов Н.Е., Практический курс программирования на CA-Clipper, Киев : BHV, 1994. - 400 с.
10. Рик Спенс, Clipper Полное руководство по программированию, Третье издание.Версия 5.01, Тивали, 1994г. - 480с.
11. Лес Пинтер FoxPro 2.0 Application Programming / Пер. с англ. Д.В.Артемова. -- М., Киев: Эдель, Век, 1994. -- 427с.
12. Клепинин В.Б. Агафонова Т.П., Visual FoxPro 9.0 наиболее полное руководство в подлиннике ч.1 и ч.2, BHV(СПб), 2008г.
13. Попов А.А., Создание приложений для FOXPRO 2.5/2.6 в DOS и WINDOWS, "Калашников и Ко", 1997г. - 660с.
14. Попов А.А. Программирование в среде FoxPro 2.0. Построение систем обработки данных. -- М.: Радио и связь, 1994. -- 352 с.
15. Щекин Р.В. Справочник по теплоснабжению и вентиляции, кн. 1. Отопление и теплоснабжение. Киев.: "Будевельник", 2006 г.- 416с.
16. Щекин Р.В. Справочник по теплоснабжению и вентиляции, кн. 2 Вентиляция и кондиционирование воздуха. Киев: "Будевельник", 2006 г.- 352с.
17. Штокман Е.А, В.А. Шилов и др. Вентиляция, Кондиционирование и очистка воздуха на предприятиях пищевой промышленности. Москва, 2001 г. 688с.
18. Методические указания к курсовой работе. Кондиционирование воздуха и холодоснабжение.
19. СНиП 2.04.05-91. М.: Стройиздат, 2008г.
20. СНиП II-3-79*. Строительная теплотехника/ Госстрой России.- М.: ГУП ЦПП, 2008г.
Интернет ресурсы
1. http://www.1c.ru/ - официальный сайт 1С
2. http://v8.1c.ru/doc8/10.htm - официальный сайт 1С: Документооборот
3. http://www.microsoft.com/ru-ru/dynamics/ax/overview.aspx - официальный сайт Microsoft Dynamics AX на русском
4. http://citforum.ru/database/foxpro/index.shtml - Краткое руководство по системе управления базами данных для Windows
5. http://clipper.borda.ru/ - Русскоязычный форум по Clipper
Приложения
Некоторые фрагменты программного кода приложения, обеспечивающие целостность данных таблиц и индексов в базе данных
**__RI_HEADER!@ Do NOT REMOVE or MODIFY this line!!!! @!__RI_HEADER**
procedureRIDELETE
localllRetVal
llRetVal=.t.
IF (ISRLOCKED() and !deleted()) OR !RLOCK()
llRetVal=.F.
ELSE
IF !deleted()
DELETE
IF CURSORGETPROP('BUFFERING') > 1
=TABLEUPDATE()
ENDIF
ENDIF not already deleted
ENDIF
UNLOCK RECORD (RECNO())
llRetVal=pnerror=0
RETURN llRetVal
procedureRIUPDATE
lparameterstcFieldName,tcNewValue,tcCascadeParent
localllRetVal
llRetVal=.t.
IF ISRLOCKED() OR !RLOCK()
llRetVal=.F.
ELSE
IF EVAL(tcFieldName)<>tcNewValue
PRIVATE pcCascadeParent
pcCascadeParent=upper(iif(type("tcCascadeParent")<>"C","",tcCascadeParent))
REPLACE (tcFieldName) WITH tcNewValue
IF CURSORGETPROP('BUFFERING') > 1
=TABLEUPDATE()
ENDIF
ENDIF values don't already match
ENDIF it's locked already, or I was able to lock it
UNLOCK RECORD (RECNO())
llRetVal=pnerror=0
returnllRetVal
procedurerierror
parameterstnErrNo,tcMessage,tcCode,tcProgram
locallnErrorRows,lnXX
lnErrorRows=alen(gaErrors,1)
if type('gaErrors[lnErrorRows,1]')<>"L"
dimensiongaErrors[lnErrorRows+1,alen(gaErrors,2)]
lnErrorRows=lnErrorRows+1
endif
gaErrors[lnErrorRows,1]=tnErrNo
gaErrors[lnErrorRows,2]=tcMessage
gaErrors[lnErrorRows,3]=tcCode
gaErrors[lnErrorRows,4]=""
lnXX=1
do while !empty(program(lnXX))
gaErrors[lnErrorRows,4]=gaErrors[lnErrorRows,4]+","+;
program(lnXX)
lnXX=lnXX+1
enddo
gaErrors[lnErrorRows,5]=pcParentDBF
gaErrors[lnErrorRows,6]=pnParentRec
gaErrors[lnErrorRows,7]=pcParentID
gaErrors[lnErrorRows,8]=pcParentExpr
gaErrors[lnErrorRows,9]=pcChildDBF
gaErrors[lnErrorRows,10]=pnChildRec
gaErrors[lnErrorRows,11]=pcChildID
gaErrors[lnErrorRows,12]=pcChildExpr
returntnErrNo
PROCEDURE riopen
PARAMETERS tcTable,tcOrder
LOCAL lcCurWkArea,lcNewWkArea,lnInUseSpot,lnOccurs,lnOccurance
lnInUseSpot=0
lnOccurs = OCCURS(UPPER(tcTable)+"*",UPPER(pcRIcursors))
FOR lnOccurance = 1 TO lnOccurs
lnInUseSpot=ATC(tcTable+"*",pcRIcursors,lnOccurance)
IF ISDIGIT(SUBSTR(pcRIcursors,lnInUseSpot-1,1)) OR;
EMPTY(SUBSTR(pcRIcursors,lnInUseSpot-1,1))
EXIT
ENDIF
lnInUseSpot=0
ENDFOR
IF lnInUseSpot=0
lcCurWkArea=select()
SELECT 0
lcNewWkArea=select()
IF NOT EMPTY(tcOrder)
USE (tcTable) AGAIN ORDER (tcOrder) ;
ALIAS ("__ri"+LTRIM(STR(SELECT()))) share
ELSE
USE (tcTable) AGAIN ALIAS ("__ri"+LTRIM(STR(SELECT()))) share
ENDIF
ifpnerror=0
pcRIcursors=pcRIcursors+upper(tcTable)+"?"+STR(SELECT(),5)
else
lcNewWkArea=0
endifsomething bad happened while attempting to open the file
ELSE
lcNewWkArea=val(substr(pcRIcursors,lnInUseSpot+len(tcTable)+1,5))
pcRIcursors = strtran(pcRIcursors,upper(tcTable)+"*"+str(lcNewWkArea,5),;
upper(tcTable)+"?"+str(lcNewWkArea,5))
IF NOT EMPTY(tcOrder)
SET ORDER TO (tcOrder) IN (lcNewWkArea)
ENDIF sent an order
ifpnerror<>0
lcNewWkArea=0
endifsomething bad happened while setting order
ENDIF
RETURN (lcNewWkArea)
PROCEDURE riend
PARAMETERS tlSuccess
locallnXX,lnSpot,lcWorkArea
IF tlSuccess
END TRANSACTION
ELSE
SET DELETED OFF
ROLLBACK
SET DELETED ON
ENDIF
IF EMPTY(pcRIolderror)
ON ERROR
ELSE
ON ERROR &pcRIolderror.
ENDIF
FOR lnXX=1 TO occurs("*",pcRIcursors)
lnSpot=atc("*",pcRIcursors,lnXX)+1
USE IN (VAL(substr(pcRIcursors,lnSpot,5)))
ENDFOR
IF pcOldCompat = "ON"
SET COMPATIBLE ON
ENDIF
IF pcOldDele="OFF"
SET DELETED OFF
ENDIF
IF pcOldExact="ON"
SET EXACT ON
ENDIF
IF pcOldTalk="ON"
SET TALK ON
ENDIF
do case
case empty(pcOldDBC)
set data to
casepcOldDBC<>DBC()
set data to (pcOldDBC)
endcase
RETURN .T.
PROCEDURE rireuse
* rireuse.prg
PARAMETERS tcTableName,tcWkArea
pcRIcursors = strtran(pcRIcursors,upper(tcTableName)+"?"+str(tcWkArea,5),;
upper(tcTableName)+"*"+str(tcWkArea,5))
RETURN .t.
**************************************************************************
** "Referential integrity delete trigger for" bank
PROCEDURE __RI_DELETE_bank
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcParentWkArea
LOCAL llDelHeaderarea
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
STORE KOD_BANK TO lcParentID,pcParentID
pcParentExpr="KOD_BANK"
lcChildWkArea=riopen("ev","bank")
IF lcChildWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
RETURN .F.
ENDIF not able to open the child work area
pcChildDBF=dbf(lcChildWkArea)
SELECT (lcChildWkArea)
SEEK lcParentID
SCAN WHILE BANK=lcParentID AND llRetVal
pnChildRec=recno()
pcChildID=BANK
pcChildExpr="BANK"
llRetVal=ridelete()
ENDSCAN get all of the ev records
=rireuse("ev",lcChildWkArea)
IF NOT llRetVal
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Delete trigger for" bank
**************************************************************************
**************************************************************************
procedure__RI_UPDATE_bank
** "Referential integrity update trigger for" bank
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcOldParentID && previous parent id value
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcChildID && child's value to be sought in parent
LOCAL lcOldChildID && old child id value
LOCAL lcParentWkArea && parentwork area handle returned by riopen
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
lcOldParentID=OLDVAL("KOD_BANK")
pcParentID=lcOldParentID
pcParentExpr="KOD_BANK"
lcParentID=KOD_BANK
IF lcParentID<>lcOldParentID
lcChildWkArea=riopen("ev")
IF lcChildWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcChildDBF=dbf(lcChildWkArea)
SELECT (lcChildWkArea)
SCAN FOR BANK=lcOldParentID
pnChildRec=recno()
pcChildID=BANK
pcChildExpr="BANK"
IF NOT llRetVal
EXIT
ENDIF && not llretval
llRetVal=riupdate("BANK",lcParentID,"BANK")
ENDSCAN get all of the ev records
=rireuse("ev",lcChildWkArea)
IF NOT llRetVal
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
ENDIF this parent id changed
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Update trigger for" bank
**************************************************************************
**************************************************************************
procedure__RI_UPDATE_ev
** "Referential integrity update trigger for" ev
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcOldParentID && previous parent id value
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcChildID && child's value to be sought in parent
LOCAL lcOldChildID && old child id value
LOCAL lcParentWkArea && parentwork area handle returned by riopen
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcChildWkArea=select()
IF _triggerlevel=1 or type("pccascadeparent")#"C" or (NOT pccascadeparent=="VEDOMR")
SELECT (lcChildWkArea)
lcChildID=VEDOMR
lcOldChildID=oldval("VEDOMR")
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcOldChildID
pcChildExpr="VEDOMR"
if isnull(lcChildID) or isnull(lcOldChildID) or lcChildID <> lcOldChildID
lcParentWkArea=riopen("vedomr","kod_vedomr")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("vedomr",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF no parent
ENDIF this value was changed
ENDIF not part of a cascade from "vedomr"
IF _triggerlevel=1 or type("pccascadeparent")#"C" or (NOT pccascadeparent=="BANK")
SELECT (lcChildWkArea)
lcChildID=BANK
lcOldChildID=oldval("BANK")
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcOldChildID
pcChildExpr="BANK"
if isnull(lcChildID) or isnull(lcOldChildID) or lcChildID <> lcOldChildID
lcParentWkArea=riopen("bank","kod_bank")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("bank",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF no parent
ENDIF this value was changed
ENDIF not part of a cascade from "bank"
IF _triggerlevel=1 or type("pccascadeparent")#"C" or (NOT pccascadeparent=="GRWK")
SELECT (lcChildWkArea)
lcChildID=GRWK
lcOldChildID=oldval("GRWK")
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcOldChildID
pcChildExpr="GRWK"
if isnull(lcChildID) or isnull(lcOldChildID) or lcChildID <> lcOldChildID
lcParentWkArea=riopen("grwk","kod_grvk")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("grwk",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF no parent
ENDIF this value was changed
ENDIF not part of a cascade from "grwk"
IF _triggerlevel=1 or type("pccascadeparent")#"C" or (NOT pccascadeparent=="USER")
SELECT (lcChildWkArea)
lcChildID=ID
lcOldChildID=oldval("ID")
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcOldChildID
pcChildExpr="ID"
if isnull(lcChildID) or isnull(lcOldChildID) or lcChildID <> lcOldChildID
lcParentWkArea=riopen("user","kod_user")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("user",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF no parent
ENDIF this value was changed
ENDIF not part of a cascade from "user"
lcParentWkArea=lcChildWkArea
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Update trigger for" ev
**************************************************************************
**************************************************************************
** "Referential integrity insert trigger for" ev
PROCEDURE __RI_INSERT_ev
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcChildID && child's value to be sought in parent
LOCAL lcParentWkArea && parentwork area handle returned by riopen
LOCAL lcChildWkArea && child's work area
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcChildWkArea=SELECT()
SELECT (lcChildWkArea)
lcChildID=VEDOMR
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcChildID
pcChildExpr="VEDOMR"
lcParentWkArea=riopen("vedomr","kod_vedomr")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("vedomr",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
SELECT (lcChildWkArea)
lcChildID=BANK
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcChildID
pcChildExpr="BANK"
lcParentWkArea=riopen("bank","kod_bank")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("bank",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
SELECT (lcChildWkArea)
lcChildID=GRWK
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcChildID
pcChildExpr="GRWK"
lcParentWkArea=riopen("grwk","kod_grvk")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("grwk",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
SELECT (lcChildWkArea)
lcChildID=ID
pcChildDBF=dbf(lcChildWkArea)
pnChildRec=recno(lcChildWkArea)
pcChildID=lcChildID
pcChildExpr="ID"
lcParentWkArea=riopen("user","kod_user")
IF lcParentWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcParentDBF=dbf(lcParentWkArea)
llRetVal=SEEK(lcChildID,lcParentWkArea)
pnParentRec=recno(lcParentWkArea)
ifllRetVal and not (isrlocked(pnParentRec, lcParentWkArea) or ;
isflocked(lcParentWkArea))
if rlock(lcParentWkArea)
unlock record pnParentRec in (lcParentWkArea)
else
=rireuse("tparen",lcParentWkArea)
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
endif
endif
=rireuse("user",lcParentWkArea)
IF NOT llRetVal
pnError = rierror(-1,"Insert restrict rule violated.","","")
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity insert trigger for" ev
**************************************************************************
**************************************************************************
** "Referential integrity delete trigger for" grwk
PROCEDURE __RI_DELETE_grwk
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcParentWkArea
LOCAL llDelHeaderarea
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
STORE KOD_GRVK TO lcParentID,pcParentID
pcParentExpr="KOD_GRVK"
lcChildWkArea=riopen("ev","grvk")
IF lcChildWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
RETURN .F.
ENDIF not able to open the child work area
pcChildDBF=dbf(lcChildWkArea)
SELECT (lcChildWkArea)
SEEK lcParentID
SCAN WHILE GRWK=lcParentID AND llRetVal
pnChildRec=recno()
pcChildID=GRWK
pcChildExpr="GRWK"
llRetVal=ridelete()
ENDSCAN get all of the ev records
=rireuse("ev",lcChildWkArea)
IF NOT llRetVal
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Delete trigger for" grwk
**************************************************************************
**************************************************************************
procedure__RI_UPDATE_grwk
** "Referential integrity update trigger for" grwk
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcOldParentID && previous parent id value
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcChildID && child's value to be sought in parent
LOCAL lcOldChildID && old child id value
LOCAL lcParentWkArea && parentwork area handle returned by riopen
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
lcOldParentID=OLDVAL("KOD_GRVK")
pcParentID=lcOldParentID
pcParentExpr="KOD_GRVK"
lcParentID=KOD_GRVK
IF lcParentID<>lcOldParentID
lcChildWkArea=riopen("ev")
IF lcChildWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcChildDBF=dbf(lcChildWkArea)
SELECT (lcChildWkArea)
SCAN FOR GRWK=lcOldParentID
pnChildRec=recno()
pcChildID=GRWK
pcChildExpr="GRWK"
IF NOT llRetVal
EXIT
ENDIF && not llretval
llRetVal=riupdate("GRWK",lcParentID,"GRWK")
ENDSCAN get all of the ev records
=rireuse("ev",lcChildWkArea)
IF NOT llRetVal
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
ENDIF this parent id changed
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Update trigger for" grwk
*************************************************************************
*************************************************************************
** "Referential integrity delete trigger for" user
PROCEDURE __RI_DELETE_user
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcParentWkArea
LOCAL llDelHeaderarea
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
STORE KOD_USER TO lcParentID,pcParentID
pcParentExpr="KOD_USER"
lcChildWkArea=riopen("ev","id")
IF lcChildWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
RETURN .F.
ENDIF not able to open the child work area
pcChildDBF=dbf(lcChildWkArea)
SELECT (lcChildWkArea)
SEEK lcParentID
SCAN WHILE ID=lcParentID AND llRetVal
pnChildRec=recno()
pcChildID=ID
pcChildExpr="ID"
llRetVal=ridelete()
ENDSCAN get all of the ev records
=rireuse("ev",lcChildWkArea)
IF NOT llRetVal
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Delete trigger for" user
**************************************************************************
**************************************************************************
procedure__RI_UPDATE_user
** "Referential integrity update trigger for" user
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcOldParentID && previous parent id value
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcChildID && child's value to be sought in parent
LOCAL lcOldChildID && old child id value
LOCAL lcParentWkArea && parentwork area handle returned by riopen
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
lcOldParentID=OLDVAL("KOD_USER")
pcParentID=lcOldParentID
pcParentExpr="KOD_USER"
lcParentID=KOD_USER
IF lcParentID<>lcOldParentID
lcChildWkArea=riopen("ev")
IF lcChildWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN .F.
ENDIF not able to open the child work area
pcChildDBF=dbf(lcChildWkArea)
SELECT (lcChildWkArea)
SCAN FOR ID=lcOldParentID
pnChildRec=recno()
pcChildID=ID
pcChildExpr="ID"
IF NOT llRetVal
EXIT
ENDIF && not llretval
llRetVal=riupdate("ID",lcParentID,"USER")
ENDSCAN get all of the ev records
=rireuse("ev",lcChildWkArea)
IF NOT llRetVal
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
ENDIF this parent id changed
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Update trigger for" user
**************************************************************************
**************************************************************************
** "Referential integrity delete trigger for" vedomr
PROCEDURE __RI_DELETE_vedomr
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcParentWkArea
LOCAL llDelHeaderarea
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
STORE KOD_VEDOMR TO lcParentID,pcParentID
pcParentExpr="KOD_VEDOMR"
lcChildWkArea=riopen("ev","vedomr")
IF lcChildWkArea<=0
IF _triggerlevel=1
DO riend WITH .F.
ENDIF at the end of the highest trigger level
RETURN .F.
ENDIF not able to open the child work area
pcChildDBF=dbf(lcChildWkArea)
SELECT (lcChildWkArea)
SEEK lcParentID
SCAN WHILE VEDOMR=lcParentID AND llRetVal
pnChildRec=recno()
pcChildID=VEDOMR
pcChildExpr="VEDOMR"
llRetVal=ridelete()
ENDSCAN get all of the ev records
=rireuse("ev",lcChildWkArea)
IF NOT llRetVal
IF _triggerlevel=1
DO riend WITH llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
ENDIF
IF _triggerlevel=1
doriend with llRetVal
ENDIF at the end of the highest trigger level
SELECT (lcStartArea)
RETURN llRetVal
** "End of Referential integrity Delete trigger for" vedomr
**************************************************************************
**************************************************************************
procedure__RI_UPDATE_vedomr
** "Referential integrity update trigger for" vedomr
LOCAL llRetVal
llRetVal = .t.
PRIVATE pcParentDBF,pnParentRec,pcChildDBF,pnChildRec,pcParentID,pcChildID
PRIVATE pcParentExpr,pcChildExpr
STORE "" TO pcParentDBF,pcChildDBF,pcParentID,pcChildID,pcParentExpr,pcChildExpr
STORE 0 TO pnParentRec,pnChildRec
IF _triggerlevel=1
BEGIN TRANSACTION
PRIVATE pcRIcursors,pcRIwkareas,pcRIolderror,pnerror,;
pcOldDele,pcOldExact,pcOldTalk,pcOldCompat,PcOldDBC
pcOldTalk=SET("TALK")
SET TALK OFF
pcOldDele=SET("DELETED")
pcOldExact=SET("EXACT")
pcOldCompat=SET("COMPATIBLE")
SET COMPATIBLE OFF
SET DELETED ON
SET EXACT OFF
pcRIcursors=""
pcRIwkareas=""
pcRIolderror=ON("error")
pnerror=0
ON ERROR pnerror=rierror(ERROR(),message(),message(1),program())
IF TYPE('gaErrors(1)')<>"U"
releasegaErrors
ENDIF
PUBLIC gaErrors(1,12)
pcOldDBC=DBC()
SET DATA TO ("DATA1")
ENDIF first trigger
LOCAL lcParentID && parent's value to be sought in child
LOCAL lcOldParentID && previous parent id value
LOCAL lcChildWkArea && child work area handle returned by riopen
LOCAL lcChildID && child's value to be sought in parent
LOCAL lcOldChildID && old child id value
LOCAL lcParentWkArea && parentwork area handle returned by riopen
LOCAL lcStartArea
lcStartArea=select()
llRetVal=.t.
lcParentWkArea=select()
SELECT (lcParentWkArea)
pcParentDBF=dbf()
pnParentRec=recno()
lcOldParentID=OLDVAL("KOD_VEDOMR")
pcParentID=lcOldParentID
Подобные документы
Анализ программных решений для учета данных в системах начисления военных пенсий. Анализ возможностей использования решений на базе Microsoft Dynamics AX. Особенности языка FoxPro. Назначение пенсий списком. Формирование файлов электронного реестра.
дипломная работа [1,9 M], добавлен 18.11.2013Проектирование и разработка автоматизированной информационной системы (АИС) публикации и обработки данных для работников детского сада № 176. Недостатки существующей АИС, снижающие эффективность работы организации. Прототип пользовательского интерфейса.
дипломная работа [7,7 M], добавлен 19.07.2012Анализ проектирования автоматизированной информационной системы компьютерного магазина "Джей". Разработка базы данных на языке Transact-SQL в системе управления базами данных Microsoft SQL Server 2000. Расчет себестоимости и цены программного продукта.
курсовая работа [2,3 M], добавлен 16.08.2012Требования к функциональным характеристикам информационной системы "Подписка". Функциональное проектирование автоматизированной системы ведения учета основных средств на предприятии. Проектирование базы данных автоматизированной системы ведения учета.
курсовая работа [753,0 K], добавлен 16.01.2015Программные средства для реализации базы данных и серверной части информационной системы "Учета технического обслуживания станков" средствами СУБД Microsoft SQL Server 2008. Разработка триггеров для поддержки сложных ограничений целостности в базе данных.
курсовая работа [768,3 K], добавлен 01.02.2013Создание автоматизированной информационной системы учета оборудования (компьютерной и оргтехники) на АКБ НМБ ОАО с использованием современных компьютерных средств. Проектирование базы данных. Алгоритмы решения задач. Расчёт затрат на проектирование.
дипломная работа [2,1 M], добавлен 16.12.2013Модернизации информационной системы "Техническая подготовка производства". Анализ процессов обработки данных при процессе заказа и размещения технологического оборудования, разработка модели автоматизированной обработки данных при помощи методологии RAD.
дипломная работа [2,5 M], добавлен 23.06.2012Разработка программного обеспечения по обработке базы данных военного округа, соответствующего требованиям ввода, редактирования, хранения, удаления информации. Этапы создания автоматизированной системы: определение предметной области, написание скрипта.
курсовая работа [2,6 M], добавлен 30.07.2010Разработка автоматизированной информационной системы "Супермаркет DNS" с опорой на платформу NET, в среде MS Visual Studio, на языке программирования C. Объектная модель программной системы согласно методологии ОМТ. Описание алгоритмов обработки данных.
курсовая работа [394,0 K], добавлен 21.10.2012Телефонная база данных компаний и организаций Астрахани и Астраханской области, структурированная по видам деятельности. Удобный доступ к базе данных, содержащей информацию о компаниях и организациях. Информационное обеспечение комплексных задач.
курсовая работа [34,4 K], добавлен 27.02.2009