Procedure cad_SLNKPrePostDimensie0, Dimensie1 en Dimensie2 aangepast i.v.m. uit te lezen LABEL dat vanuit AutoCAD wordt gestuurd.

svn path=/Database/trunk/; revision=6662
This commit is contained in:
Bert in het Veld
1999-04-09 15:40:40 +00:00
parent 5cd639b05e
commit 89509d4bd9

View File

@@ -69,6 +69,7 @@ CREATE OR REPLACE PACKAGE cad AS
PROCEDURE cad_SLNKpostErase(Session_Id NUMBER);
PROCEDURE cad_SLNKpostModify(Session_Id NUMBER);
PROCEDURE cad_SLNKSTRUCTclearAll(Session_Id NUMBER);
PROCEDURE cad_SLNKgetDrawing(Session_Id NUMBER);
PROCEDURE cad_SLNKPreDraw(Session_Id NUMBER);
PROCEDURE cad_SLNKPrePostDraw(Session_Id NUMBER);
@@ -1075,10 +1076,14 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
SrtDeelCode VARCHAR2(10);
Omschrijving VARCHAR2(30);
ZoekString VARCHAR2(20);
AntiString VARCHAR2(20);
VolgNrTxt VARCHAR2(30);
SeqNr NUMBER(10);
LPNKey NUMBER(10);
MaxLengte NUMBER(10);
Dummy NUMBER(10);
LabelSymbool VARCHAR2(256);
LabelOK BOOLEAN;
BEGIN
LocatieCode := cad_getLocatieCode_Tekening(LoadDwg);
@@ -1103,40 +1108,58 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
ELSIF LPNCondName = 'LPN_PRS_WERKPLEK' THEN
PlaatsDeel := 'W';
END IF;
SELECT ins_srtdeel_code INTO SrtDeelCode
FROM ins_srtdeel
WHERE ins_srtdeel_key = SrtdeelKey;
Zoekstring := RTRIM(SrtDeelCode)||' - '||'0%';
BEGIN
SELECT MAX(LENGTH(ins_deel_omschrijving)) INTO MaxLengte
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_alg_locatie_key = LocatieKey
AND ins_deel_parent_key IS NULL
AND ins_deel_omschrijving LIKE Zoekstring
AND ins_deel_omschrijving NOT LIKE '- 00%';
SELECT max(ins_deel_omschrijving) INTO Omschrijving
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_alg_locatie_key = LocatieKey
AND ins_deel_parent_key IS NULL
AND ins_deel_omschrijving LIKE Zoekstring
AND ins_deel_omschrijving NOT LIKE '- 00%'
AND LENGTH(ins_deel_omschrijving) = MaxLengte;
IF Omschrijving IS NOT NULL THEN
VolgnrTxt := Bepaal_VolgnummerTxt(Omschrijving);
ELSE
VolgnrTxt := RTRIM(SrtdeelCode)||' - 01';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
VolgnrTxt := RTRIM(SrtdeelCode)||' - 01';
END;
Omschrijving := VolgnrTxt;
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABEL');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
SELECT ins_deel_key INTO Dummy
FROM all_v_aanwezigdeel
WHERE ins_deel_upper = LabelSymbool;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LabelOK := TRUE;
Omschrijving := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF NOT LabelOK THEN
SELECT ins_srtdeel_code INTO SrtDeelCode
FROM ins_srtdeel
WHERE ins_srtdeel_key = SrtdeelKey;
Zoekstring := RTRIM(SrtDeelCode)||' - 0%';
Antistring := RTRIM(SrtDeelCode)||' - 00%';
BEGIN
SELECT MAX(LENGTH(ins_deel_omschrijving)) INTO MaxLengte
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_alg_locatie_key = LocatieKey
AND ins_deel_parent_key IS NULL
AND ins_deel_omschrijving LIKE Zoekstring
AND ins_deel_omschrijving NOT LIKE AntiString;
SELECT max(ins_deel_omschrijving) INTO Omschrijving
FROM all_v_aanwezigdeel
WHERE ins_srtdeel_key = SrtdeelKey
AND ins_alg_locatie_key = LocatieKey
AND ins_deel_parent_key IS NULL
AND ins_deel_omschrijving LIKE Zoekstring
AND ins_deel_omschrijving NOT LIKE AntiString
AND LENGTH(ins_deel_omschrijving) = MaxLengte;
IF Omschrijving IS NOT NULL THEN
VolgnrTxt := Bepaal_VolgnummerTxt(Omschrijving);
ELSE
VolgnrTxt := RTRIM(SrtdeelCode)||' - 01';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
VolgnrTxt := RTRIM(SrtdeelCode)||' - 01';
END;
Omschrijving := VolgnrTxt;
END IF;
INSERT INTO ins_deel(ins_srtdeel_key, ins_alg_ruimte_key, ins_alg_ruimte_type, ins_deel_aantal,
ins_deel_omschrijving) VALUES(SrtdeelKey, LPNCondKey, PlaatsDeel, 1, Omschrijving);
COMMIT;
@@ -1531,6 +1554,7 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
LayerNaam VARCHAR2(256);
Symbool VARCHAR2(256);
SymboolLayer VARCHAR2(256);
LabelSymbool VARCHAR2(256);
SrtdeelKey NUMBER(10);
LPNName VARCHAR2(128);
LPNKey NUMBER(10);
@@ -1544,6 +1568,8 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
LoadDwg VARCHAR2(128);
SeqNr NUMBER(10);
Omschrijving VARCHAR2(30);
Dummy NUMBER(10);
LabelOK BOOLEAN;
BEGIN
Dimensie := 0;
@@ -1578,22 +1604,44 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
LPNCondKeyOK := FALSE;
END IF;
IF LPNCondKeyOK THEN
/* Bepaal het volgnummer v/d toe te voegen werkplek */
BEGIN
SELECT MAX(prs_werkplek_volgnr) + 1
INTO WerkplekNr
FROM all_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prs_werkplek_module = 'PRR';
EXCEPTION
WHEN NO_DATA_FOUND THEN
werkplekNr := 1;
END;
/* Omschrijving */
SELECT alg_ruimte_nr INTO RuimteNr
FROM alg_ruimte
WHERE alg_ruimte_key = LPNCondKey;
Omschrijving := RuimteNr||' - '||TO_CHAR(WerkplekNr);
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABEL');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
/* Vanuit AutoCAD voorstel voor een label binnengekregen */
BEGIN
SELECT prs_werkplek_key INTO Dummy
FROM all_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prs_werkplek_volgnr = LabelSymbool;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
/* Label bestaat nog niet */
LabelOK := TRUE;
Omschrijving := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF NOT LabelOK THEN
/* Bepaal het volgnummer v/d toe te voegen werkplek */
BEGIN
SELECT MAX(prs_werkplek_volgnr) + 1
INTO WerkplekNr
FROM all_v_aanwezigwerkplek
WHERE prs_alg_ruimte_key = LPNCondKey
AND prs_werkplek_module = 'PRR';
EXCEPTION
WHEN NO_DATA_FOUND THEN
werkplekNr := 1;
END;
/* Omschrijving */
SELECT alg_ruimte_nr INTO RuimteNr
FROM alg_ruimte
WHERE alg_ruimte_key = LPNCondKey;
Omschrijving := RuimteNr||' - '||TO_CHAR(WerkplekNr);
END IF;
INSERT INTO prs_werkplek(prs_werkplek_module, prs_werkplek_volgnr, prs_werkplek_omschrijving,
prs_alg_ruimte_key) VALUES ('PRR', WerkplekNr, Omschrijving, LPNCondKey);
RecordAdded := TRUE;
@@ -1808,6 +1856,9 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
ZoekString VARCHAR2(20);
StreepPos NUMBER(2);
MaxLengte NUMBER(10);
Dummy NUMBER(10);
LabelSymbool VARCHAR2(256);
LabelOK BOOLEAN;
BEGIN
Dimensie := 2;
@@ -1816,6 +1867,7 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
BlockNaam := cad_SLNKSTRUCTreadVALSTR(Session_id, 'BLOCK');
LPNCondName := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LPNALIASCONDO');
LPNCondKey := cad_SLNKSTRUCTreadVALINT(Session_id, 'LPNKEYCONDO');
SELECT cad_symbool_layer INTO SymboolLayer
FROM cad_symbool
WHERE cad_symbool_entry = 'ALG_TERREINSECTOR';
@@ -1825,28 +1877,48 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
SELECT alg_locatie_key INTO LocatieKey
FROM alg_locatie
WHERE alg_locatie_code = LocatieCode;
/* De terreinsectorcode = locatiecode + volgnummer */
BEGIN
SELECT MAX(LENGTH(alg_terreinsector_code)) INTO MaxLengte
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code BETWEEN '0' AND '9999999999'
AND alg_terreinsector_code like '0%'
AND alg_terreinsector_code NOT LIKE '- 00%';
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABEL');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
/* Check of label reeds bestaat */
SELECT alg_terreinsector_key INTO Dummy
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND UPPER(alg_terreinsector_code) = LabelSymbool;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LabelOK := TRUE;
SectorCode := LabelSymbool;
END;
ELSE
LabelOK:= FALSE;
END IF;
IF NOT LabelOK THEN
/* De terreinsectorcode = locatiecode + volgnummer */
BEGIN
SELECT MAX(LENGTH(alg_terreinsector_code)) INTO MaxLengte
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code BETWEEN '0' AND '9999999999'
AND alg_terreinsector_code like '0%'
AND alg_terreinsector_code NOT LIKE '00%';
SELECT max(alg_terreinsector_code) INTO Omschrijving
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code BETWEEN '0' AND '9999999999'
AND alg_terreinsector_code like '0%'
AND alg_terreinsector_code NOT LIKE '- 00%'
AND LENGTH(alg_terreinsector_code) = MaxLengte;
SectorCode := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
SectorCode := '01';
END;
SELECT max(alg_terreinsector_code) INTO Omschrijving
FROM alg_v_aanwezigterreinsector
WHERE alg_locatie_key = LocatieKey
AND alg_terreinsector_code BETWEEN '0' AND '9999999999'
AND alg_terreinsector_code like '0%'
AND alg_terreinsector_code NOT LIKE '00%'
AND LENGTH(alg_terreinsector_code) = MaxLengte;
SectorCode := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
SectorCode := '01';
END;
END IF;
INSERT INTO alg_terreinsector(alg_locatie_key, alg_terreinsector_code, alg_terreinsector_naam)
VALUES (LocatieKey, SectorCode, SectorCode);
RecordAdded := TRUE;
@@ -1873,26 +1945,46 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
SELECT alg_locatie_key INTO LocatieKey
FROM alg_locatie
WHERE alg_locatie_code = LocatieCode;
BEGIN
SELECT MAX(LENGTH(alg_gebouw_code)) INTO MaxLengte
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code BETWEEN '0' AND '9999999999'
AND alg_gebouw_code like '0%'
AND alg_gebouw_code NOT LIKE '- 00%';
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABEL');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
SELECT alg_gebouw_key INTO Dummy
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND UPPER(alg_gebouw_code) = LabelSymbool;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
LabelOK := TRUE;
GebouwCode := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF NOT labelOK THEN
BEGIN
SELECT MAX(LENGTH(alg_gebouw_code)) INTO MaxLengte
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code BETWEEN '0' AND '9999999999'
AND alg_gebouw_code like '0%'
AND alg_gebouw_code NOT LIKE '00%';
SELECT MAX(alg_gebouw_code) INTO omschrijving
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code BETWEEN '0' AND '9999999999'
AND alg_gebouw_code like '0%'
AND alg_gebouw_code NOT LIKE '- 00%'
AND LENGTH(alg_gebouw_code) = MaxLengte;
GebouwCode := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
GebouwCode := '01';
END;
SELECT MAX(alg_gebouw_code) INTO omschrijving
FROM alg_v_aanweziggebouw
WHERE alg_locatie_key = LocatieKey
AND alg_gebouw_code BETWEEN '0' AND '9999999999'
AND alg_gebouw_code like '0%'
AND alg_gebouw_code NOT LIKE '00%'
AND LENGTH(alg_gebouw_code) = MaxLengte;
GebouwCode := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
GebouwCode := '01';
END;
END IF;
INSERT INTO alg_gebouw(alg_locatie_key,alg_srtgebouw_key,alg_gebouw_code,alg_gebouw_naam,
alg_gebouw_omschrijving) VALUES(LocatieKey, NULL, GebouwCode, GebouwCode, GebouwCode);
COMMIT;
@@ -1935,27 +2027,48 @@ FUNCTION Bepaal_VolgnummerTxt(Omschrijving IN VARCHAR2) RETURN VARCHAR2 IS
WHEN NO_DATA_FOUND THEN
VerdiepingNr := NULL;
END;
IF VerdiepingNr IS NOT NULL THEN
LabelSymbool := cad_SLNKSTRUCTreadVALSTR(Session_id, 'LABEL');
LabelOK := FALSE;
IF LabelSymbool IS NOT NULL THEN
LabelSymbool := SUBSTR(LabelSymbool,1,10);
BEGIN
SELECT MAX(LENGTH(alg_ruimte_nr)) INTO MaxLengte
SELECT alg_ruimte_key INTO Dummy
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_Key = VerdiepingKey
AND alg_ruimte_nr BETWEEN '0' AND '9999999999'
AND alg_ruimte_nr like '0%'
AND alg_ruimte_nr NOT LIKE '- 00%';
SELECT MAX(alg_ruimte_nr) INTO Omschrijving
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_Key = VerdiepingKey
AND alg_ruimte_nr BETWEEN '0' AND '9999999999'
AND alg_ruimte_nr like '0%'
AND alg_ruimte_nr NOT LIKE '- 00%'
AND LENGTH(alg_ruimte_nr) = MaxLengte;
RuimteNr := Bepaal_VolgnummerTxt(Omschrijving);
WHERE alg_verdieping_key = VerdiepingKey
AND alg_ruimte_upper_nr = LabelSymbool;
LabelOK := FALSE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RuimteNr := '01';
END;
LabelOK := TRUE;
RuimteNr := LabelSymbool;
END;
ELSE
LabelOK := FALSE;
END IF;
IF VerdiepingNr IS NOT NULL THEN
IF NOT LabelOK THEN
BEGIN
SELECT MAX(LENGTH(alg_ruimte_nr)) INTO MaxLengte
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_Key = VerdiepingKey
AND alg_ruimte_nr BETWEEN '0' AND '9999999999'
AND alg_ruimte_nr like '0%'
AND alg_ruimte_nr NOT LIKE '00%';
SELECT MAX(alg_ruimte_nr) INTO Omschrijving
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_Key = VerdiepingKey
AND alg_ruimte_nr BETWEEN '0' AND '9999999999'
AND alg_ruimte_nr like '0%'
AND alg_ruimte_nr NOT LIKE '00%'
AND LENGTH(alg_ruimte_nr) = MaxLengte;
RuimteNr := Bepaal_VolgnummerTxt(Omschrijving);
EXCEPTION
WHEN NO_DATA_FOUND THEN
RuimteNr := '01';
END;
END IF;
INSERT INTO alg_ruimte(alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr)
VALUES (VerdiepingKey, NULL, RuimteNr);
RecordAdded := TRUE;