Files
Database/CAD/CAD_PAC.SRC
Bert in het Veld 81607c1666 Kleine aanpassingen gedaan i.v.m. BIS.
svn path=/Database/trunk/; revision=6364
1998-11-23 15:42:58 +00:00

629 lines
23 KiB
Plaintext

#ifdef CAD // 22-05-1998 KTH
/* REVISIONS:
*
*
* --- 01.41 ---
*
* 20-11-1998 BIV Procedure cad_SLNKSTRUCTclearAll toegevoegd (wist alles van de opgegeven sessie).
* 12-11-1998 BIV Procedure cad_SLNKSTRUCTmodify toegevoegd.
* 09-11-1998 BIV Procedure cad_SLNKSTRUCTposterase toegevoegd.
* 06-11-1998 BIV Procedure cad_SLNKSTRUCTpostdraw toegevoegd.
* 05-11-1998 BIV Procedure cad_SLNKSTRUCTshift toegevoegd(wist 1ste entry van opgegeven sessie schuift
* alle andere entries 1 pos. door (dus 4->3, 3->2 en 2->1)).
* 05-11-1998 BIV Procedure cad_SLNKSTRUCTclear toegevoegd (wist alles van de opgegeven sessie, behalve de
* entry FAC_MODULE).
* 02-11-1998 BIV Procedures cad_SLNKSTRUCTinsertVALINT,...VALSTR, ....VALREAL en ....VALDATE toegevoegd.
* 06-10-1998 PF #2060 get_tekeningnaam werkt nu ook voor terreinen
* --- 01.40 ---
* --- 01.39 ---
* 22-07-1998 KTH - diverse -- vervangen door slash-sterretje/sterretje-slash
* - diverse kleine aanpassingen
* 21-07-1998 BIV Procedure cad_p_ruimte_update_opp toegevoegd
* 21-07-1998 BIV Functie cad_f_ruimte_get_tekeningnaam() toegevoegd.
* 09-07-1998 PF Geen exception meer, en PRAGMA WNPS toegevoegd
* 08-07-1998 PF Functies gebruiken TABLE ins_deel ipv VIEW ins_v_aanwezigdeel, vanwege autorisatie.
* De functie wordt ook door andere users (FCLTCAD) gebruikt, en die ziet niets
* in de autorisatie views
* 07-07-1998 BIV Functies cad_f_deel_get_locatie_key, ..._get_verdieping_key, ..._get_discipline_key,
* ..._get_tekeningnaam toegevoegd.
* --- 01.38 ---
* --- 01.37 ---
* 22-05-1998 KTH Aangemaakt
*/
CREATE OR REPLACE PACKAGE cad AS
FUNCTION cad_f_deel_get_locatie(key IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_verdieping(key IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_discipline(key IN NUMBER) RETURN NUMBER;
FUNCTION cad_f_deel_get_tekeningnaam(key IN NUMBER) RETURN VARCHAR2;
FUNCTION cad_f_ruimte_get_tekeningnaam(key IN NUMBER) RETURN VARCHAR2;
PROCEDURE cad_p_ruimte_update_opp(key IN NUMBER, VloerOpp IN NUMBER);
PROCEDURE cad_SLNKSTRUCTinsertVALINT(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER);
PROCEDURE cad_SLNKSTRUCTinsertVALSTR(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value VARCHAR2, ClrEntry NUMBER);
PROCEDURE cad_SLNKSTRUCTinsertVALREAL(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER);
PROCEDURE cad_SLNKSTRUCTinsertVALDATE(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value DATE, ClrEntry NUMBER);
FUNCTION cad_SLNKSTRUCTreadVALINT(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER;
FUNCTION cad_SLNKSTRUCTreadVALSTR(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN VARCHAR2;
FUNCTION cad_SLNKSTRUCTreadVALREAL(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER;
FUNCTION cad_SLNKSTRUCTreadVALDATE(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN DATE;
PROCEDURE cad_SLNKSTRUCTclear(Session_Id NUMBER);
PROCEDURE cad_SLNKSTRUCTshift(Session_Id NUMBER);
PROCEDURE cad_SLNKpostDraw(Session_Id NUMBER);
PROCEDURE cad_SLNKpostErase(Session_Id NUMBER);
PROCEDURE cad_SLNKpostModify(Session_Id NUMBER);
PROCEDURE cad_SLNKSTRUCTclearAll(Session_Id NUMBER);
/* garandeer dat de functies de database-state en package-state niet beinvloeden
* (anders kunnen ze niet zondermeer in een view worden gebruikt)
*/
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_locatie, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_verdieping, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_discipline, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_deel_get_tekeningnaam, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cad_f_ruimte_get_tekeningnaam, WNDS, WNPS);
END cad;
/
CREATE OR REPLACE PACKAGE BODY cad AS
FUNCTION cad_f_deel_get_locatie(Key IN NUMBER) RETURN NUMBER IS
locatie_key NUMBER(10);
BEGIN
SELECT ins_alg_locatie_key
INTO locatie_key
FROM all_v_aanwezigdeel
/* FROM ins_deel -- de tabel i.o.m. PF view gebruiken */
WHERE ins_deel_key = Key;
RETURN locatie_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END cad_f_deel_get_locatie;
FUNCTION cad_f_deel_get_verdieping(Key IN NUMBER) RETURN NUMBER IS
verdieping_key NUMBER(10);
BEGIN
SELECT ALG_G.alg_verdieping_key
INTO verdieping_key
FROM alg_ruimte ALG_G, ins_deel INS_D /* de tabel! */
WHERE INS_D.ins_deel_key = Key
AND INS_D.ins_alg_ruimte_key = ALG_G.alg_ruimte_key;
RETURN verdieping_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END cad_f_deel_get_verdieping;
FUNCTION cad_f_deel_get_discipline(Key IN NUMBER) RETURN NUMBER IS
discipline_key NUMBER(10);
BEGIN
SELECT ins_discipline_key
INTO discipline_key
FROM all_v_aanwezigdeel
/* FROM ins_deel -- de tabel! */
WHERE ins_deel_key = Key;
RETURN discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END cad_f_deel_get_discipline;
FUNCTION cad_f_deel_get_tekeningnaam(Key IN NUMBER) RETURN VARCHAR2 IS
tekeningnaam VARCHAR2(256);
locatie_key NUMBER(10);
verdieping_key NUMBER(10);
discipline_key NUMBER(10);
BEGIN
locatie_key := cad_f_deel_get_locatie(Key);
verdieping_key := cad_f_deel_get_verdieping(Key);
discipline_key := cad_f_deel_get_discipline(Key);
IF (locatie_key IS NOT NULL AND
verdieping_key IS NOT NULL AND
discipline_key IS NOT NULL) THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key = verdieping_key
AND ins_discipline_key = discipline_key;
RETURN tekeningnaam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
ELSIF (locatie_key IS NOT NULL AND
verdieping_key IS NULL AND
discipline_key IS NOT NULL) THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key IS NULL
AND ins_discipline_key = discipline_key;
RETURN tekeningnaam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END IF;
END cad_f_deel_get_tekeningnaam;
FUNCTION cad_f_ruimte_get_tekeningnaam(Key IN NUMBER) RETURN VARCHAR2 IS
tekeningnaam VARCHAR2(256);
locatie_key NUMBER(10);
verdieping_key NUMBER(10);
BEGIN
SELECT alg_locatie_key, alg_verdieping_key
INTO locatie_key, verdieping_key
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = Key;
IF (locatie_key IS NOT NULL AND
verdieping_key IS NOT NULL) THEN
BEGIN
SELECT cad_tekening_filenaam
INTO tekeningnaam
FROM cad_v_cad_tekening /* ja deze! */
WHERE alg_locatie_key = locatie_key
AND alg_verdieping_key = verdieping_key
AND cad_tekening_type = 'C';
RETURN tekeningnaam;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* raise_application_error(-20000, 'ins_m166'); */
RETURN NULL;
END;
ELSE
RETURN NULL;
END IF;
END cad_f_ruimte_get_tekeningnaam;
/*
* CAD_P_RUIMTE_UPDATE_OPP wordt aangeroepen vanuit AutoCAD
* en wijzigt de vloeroppervlakte van een opgegeven ruimte
*
* Merk op dat een eventuele EXCEPTION hier niet expliciet wordt afgevangen!
*/
PROCEDURE cad_p_ruimte_update_opp(Key IN NUMBER, VloerOpp IN NUMBER) IS
BEGIN
/* alleen indien het een logisch aanwezige ruimte betreft passen we de opp aan */
UPDATE alg_v_aanwezigruimte
SET alg_ruimte_bruto_vloeropp = VloerOpp
WHERE alg_ruimte_key = Key;
COMMIT;
END cad_p_ruimte_update_opp;
PROCEDURE cad_SLNKSTRUCTdelete(Session_Id NUMBER, Entry VARCHAR2) IS
BEGIN
BEGIN
DELETE FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = entry;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END cad_SLNKSTRUCTdelete;
PROCEDURE cad_SLNKSTRUCTinsertVALINT(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valint)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALINT;
PROCEDURE cad_SLNKSTRUCTinsertVALSTR(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value VARCHAR2, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valstr)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALSTR;
PROCEDURE cad_SLNKSTRUCTinsertVALREAL(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value NUMBER, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valreal)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALREAL;
PROCEDURE cad_SLNKSTRUCTinsertVALDATE(Session_Id NUMBER, entry VARCHAR2, seqnr NUMBER, value DATE, ClrEntry NUMBER) IS
BEGIN
IF ClrEntry = 1 AND seqnr = 1 THEN
cad_SLNKSTRUCTdelete(Session_Id, Entry);
END IF;
BEGIN
INSERT INTO cad_slnkstruct(cad_slnkstruct_sessionId, cad_slnkstruct_entry, cad_slnkstruct_seqnr, cad_slnkstruct_valdate)
VALUES(Session_Id, entry, seqnr, value);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END cad_SLNKSTRUCTinsertVALDATE;
PROCEDURE cad_SLNKSTRUCTclear(Session_Id NUMBER) IS
BEGIN
BEGIN
DELETE FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry <> 'FAC_MODULE'
OR cad_slnkstruct_entry <> 'SYNC';
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END cad_SLNKSTRUCTclear;
PROCEDURE cad_SLNKSTRUCTclearAll(Session_Id NUMBER) IS
BEGIN
BEGIN
DELETE FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END cad_SLNKSTRUCTclearAll;
PROCEDURE cad_SLNKSTRUCTshift(Session_Id NUMBER) IS
aantal NUMBER(10);
BEGIN
BEGIN
SELECT max(cad_slnkstruct_seqnr) INTO aantal
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry <> 'FAC_MODULE'
OR cad_slnkstruct_entry <> 'SYNC';
IF aantal > 1 THEN
DELETE FROM cad_slnkstruct
WHERE cad_slnkstruct_seqnr = 1
AND cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry <> 'FAC_MODULE'
OR cad_slnkstruct_entry <> 'SYNC';
COMMIT;
UPDATE cad_slnkstruct
SET cad_slnkstruct_seqnr = cad_slnkstruct_seqnr - 1
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry <> 'FAC_MODULE'
OR cad_slnkstruct_entry <> 'SYNC';
COMMIT;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END cad_SLNKSTRUCTshift;
FUNCTION cad_SLNKSTRUCTreadVALINT(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER IS
Value NUMBER;
BEGIN
BEGIN
SELECT cad_slnkstruct_valint INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALINT;
FUNCTION cad_SLNKSTRUCTreadVALSTR(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN VARCHAR2 IS
Value VARCHAR2(128);
BEGIN
BEGIN
SELECT cad_slnkstruct_valstr INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALSTR;
FUNCTION cad_SLNKSTRUCTreadVALREAL(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN NUMBER IS
Value NUMBER;
BEGIN
BEGIN
SELECT cad_slnkstruct_valreal INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALREAL;
FUNCTION cad_SLNKSTRUCTreadVALDATE(Session_Id IN NUMBER, Entry IN VARCHAR2) RETURN DATE IS
Value DATE;
BEGIN
BEGIN
SELECT cad_slnkstruct_valdate INTO Value
FROM cad_slnkstruct
WHERE cad_slnkstruct_sessionid = Session_Id
AND cad_slnkstruct_entry = Entry
AND cad_slnkstruct_seqnr = 1;
RETURN Value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN NULL;
END;
END cad_SLNKSTRUCTreadVALDATE;
PROCEDURE cad_SLNKpostdraw(Session_Id NUMBER) IS
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
VeldKey NUMBER(10);
Oppervlak NUMBER(13,3);
Diepte NUMBER(8,2);
Volume NUMBER(8,2);
Datum DATE;
Nieuwe_key NUMBER(10);
BEGIN
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASINSO');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYINSO');
IF LPNName = 'LPN_BIS_BORING' THEN
UPDATE bis_boring
SET bis_boring_getekend = 'TRUE'
WHERE bis_boring_key = LPNKey;
/* als het een veld betreft dan oppervlakte aanpassen in tabel bis_veld */
SELECT bis_veld_key INTO VeldKey
FROM bis_boring_boringtype
WHERE bis_boring_key = LPNKey;
IF VeldKey IS NOT NULL THEN
/* lees oppervlakte uit */
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_veld
SET bis_veld_oppervlakte = Oppervlak
WHERE bis_veld_key = Veldkey;
END IF;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE alg_terreinsector
SET alg_terreinsector_oppervlak = Oppervlak
WHERE alg_terreinsector_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_BIS_PROJECT' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_project
SET bis_project_oppervlakte = Oppervlak
WHERE bis_project_key = LPNKey;
ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN
Volume := cad_SLNKSTRUCTreadVALREAL(Session_id, 'VOLUME');
Diepte:= cad_SLNKSTRUCTreadVALREAL(Session_id, 'DEPTH');
Datum := TO_DATE(cad_SLNKSTRUCTreadVALSTR(Session_id, 'DATE'), 'DD-MM-YYYY');
UPDATE bis_ontgravingsvak
SET bis_ontgravingsvak_volume = Volume,
bis_ontgravingsvak_diepte = Diepte
WHERE bis_ontgravingsvak_key = LPNKey;
/* "Onthoofden" van trajecten */
/*
DECLARE
CURSOR TrajectKleinerDiepte IS
SELECT CAD_S.cad_slnkstruct_valint, BIS_BT.bis_traject_key
FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT
WHERE CAD_S.cad_slnkstruct_sessionid = Session_Id
AND CAD_S.cad_slnkstruct_entry = 'LPNKEYINSO'
AND CAD_S.cad_slnkstruct_valint = BIS_BT.bis_boring_key
AND BIS_BT.bis_traject_begindiepte < Diepte;
BEGIN
UPDATE bis_traject
SET bis_traject_einddatum = Datum
WHERE bis_traject_key IN
(SELECT * FROM TrajectKleinerDiepte)
AND bis_traject_einddatum IS NULL);
END;
DECLARE
CURSOR TrajectOverlap IS
SELECT CAD_S.cad_slnkstruct_valint, BIS_BT.bis_traject_key
FROM cad_slnkstruct CAD_S, bis_v_boring_trajecten BIS_BT
WHERE CAD_S.cad_slnkstruct_sessionid = Session_Id
AND CAD_S.cad_slnkstruct_entry = 'LPNKEYINSO'
AND CAD_S.cad_slnkstruct_valint = BIS_BT.bis_boring_key
AND BIS_BT.bis_traject_begindiepte < Diepte
AND BIS_BT.bis_traject_einddiepte > Diepte;
BEGIN
FOR TrajectOverlapRec IN TrajectOverlap LOOP
/* Maak kopie van bestaand traject en... */
/*
SELECT bis_s_bis_traject_key.nextval INTO Nieuwe_key FROM DUAL;
INSERT INTO bis_traject(bis_boring_boringtype_key, bis_traject_einddiepte, bis_traject_begindatum,
bis_traject_humus, bis_traject_lutum, bis_traject_ph, bis_traject_ec, bis_traject_opmerkingen)
SELECT bis_boring_boringtype_key, bis_traject_einddiepte, bis_traject_begindatum,
bis_traject_humus, bis_traject_lutum, bis_traject_ph, bis_traject_ec, bis_traject_opmerkingen
FROM bis_traject
WHERE bis_traject_key = TrajectOverlapRec.bis_traject_key;
/* ...maak begindiepte gelijk aan diepte van ontgravingsvak */
UPDATE bis_traject
SET bis_traject_begindiepte = Diepte
WHERE bis_traject_key = Nieuwe_key
AND bis_traject_einddatum IS NULL;
COMMIT;
END LOOP;
/* "Set" verwijderdatum van het traject dat met diepte ontgravingsvak overlapt. */
UPDATE bis_traject
SET bis_traject_einddatum = Datum
WHERE bis_traject_key IN
(SELECT * FROM TrajectOverlap)
AND bis_traject_einddatum IS NULL;
END;
/* Als boringtype = 'GROND' dan ook bodemprofiel verwijderen als het binnen ontgravingsvak valt */
*/
END IF;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1); /* ORACLE is klaar */
END cad_SLNKpostdraw;
PROCEDURE cad_SLNKpostErase(Session_Id NUMBER) IS
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
SeqNr NUMBER(10);
CheckDatum VARCHAR2(10);
Datum DATE;
Eerste BOOLEAN;
BEGIN
CheckDatum := cad_SLNKSTRUCTreadVALSTR(Session_id, 'DATE');
Datum := TO_DATE(CheckDatum, 'DD-MM-YYYY');
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASDELO');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYDELO');
IF LPNName = 'LPN_BIS_BORING' THEN
IF CheckDatum IS NOT NULL THEN
UPDATE bis_boring
SET bis_boring_verwijderdatum = Datum
WHERE bis_boring_key = LPNKey;
ELSE
UPDATE bis_boring
SET bis_boring_getekend = 'FALSE'
WHERE bis_boring_key = LPNKey;
UPDATE bis_veld
SET bis_veld_oppervlakte = NULL
WHERE bis_veld_key IN
(SELECT bis_veld_key FROM bis_boring_boringtype
WHERE bis_boring_key = LPNKey);
END IF;
COMMIT;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN
BEGIN
DECLARE
CURSOR Sectorboring IS
SELECT bis_boring_key, alg_terreinsector_key
FROM bis_v_aanwezigboring
WHERE alg_terreinsector_key = LPNKey;
BEGIN
Eerste := TRUE;
FOR BoringRec IN Sectorboring LOOP
IF Eerste THEN
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 1);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, BoringRec.bis_boring_key, 1);
Eerste := FALSE;
ELSE
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'LPNALIASDELA', 1,'LPN_BIS_BORING', 0);
cad_SLNKSTRUCTinsertVALINT(Session_Id, 'LPNKEYDELA', 1, BoringRec.bis_boring_key, 0);
END IF;
END LOOP;
END;
END;
UPDATE alg_terreinsector
SET alg_terreinsector_verwijder = Datum
WHERE alg_terreinsector_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_BIS_PROJECT' THEN
UPDATE bis_project
SET bis_project_einddatum = Datum
WHERE bis_project_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN
NULL; /* moet nog uitgewerkt worden */
END IF;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKpostErase;
PROCEDURE cad_SLNKpostModify(Session_Id NUMBER) IS
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
VeldKey NUMBER(10);
Oppervlak NUMBER(13,3);
BEGIN
LPNName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASMODO');
LPNKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYMODO');
IF LPNName = 'LPN_BIS_BORING' THEN
/* als het een veld betreft dan oppervlakte aanpassen in tabel bis_veld */
SELECT bis_veld_key INTO VeldKey
FROM bis_boring_boringtype
WHERE bis_boring_key = LPNKey;
IF VeldKey IS NOT NULL THEN
/* lees oppervlakte uit */
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_veld
SET bis_veld_oppervlakte = Oppervlak
WHERE bis_veld_key = Veldkey;
END IF;
ELSIF LPNName = 'LPN_ALG_TERREINSECTOR' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE alg_terreinsector
SET alg_terreinsector_oppervlak = Oppervlak
WHERE alg_terreinsector_key = LPNKey;
COMMIT;
ELSIF LPNName = 'LPN_BIS_PROJECT' THEN
Oppervlak := cad_SLNKSTRUCTreadVALREAL(Session_id, 'AREA');
UPDATE bis_project
SET bis_project_oppervlakte = Oppervlak
WHERE bis_project_key = LPNKey;
ELSIF LPNName = 'LPN_BIS_ONTGRAVINGSVAK' THEN
NULL; /* moet nog uitgewerkt worden */
END IF;
cad_SLNKSTRUCTinsertVALSTR(Session_Id, 'SYNC', 1, 'AUTOCAD', 1);
END cad_SLNKpostModify;
END cad;
/
#endif // CAD