FCLT#63518 Kolommen omdraaien in 'TRANSPORT: Flexkenmerken Meldingen'

svn path=/Database/trunk/; revision=48559
This commit is contained in:
Erik Groener
2020-10-22 12:03:38 +00:00
parent 3f376c67e0
commit 0413411c40

View File

@@ -960,10 +960,10 @@ CREATE OR REPLACE PACKAGE BODY fac AS
CURSOR old_rap
IS
SELECT fac_usrrap_cols_key column_id
, fac_usrrap_cols_volgnr
, fac_usrrap_cols_volgnr column_seq
, fac_usrrap_cols_column_name column_name
, fac_usrrap_cols_caption
, fac_usrrap_cols_filter
, fac_usrrap_cols_caption column_caption
, fac_usrrap_cols_filter column_filter
, fac_usrrap_cols_datatype column_datatype
FROM fac_usrrap_cols
WHERE fac_usrrap_key = p_usrrap_key
@@ -988,6 +988,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
WHERE table_name = UPPER(cp_viewname)
ORDER BY column_id;
TYPE t_rap_col IS VARRAY(200) OF old_rap%ROWTYPE;
v_error_nr NUMBER;
v_viewname fac_usrrap.fac_usrrap_view_name%TYPE;
v_procname fac_usrrap.fac_usrrap_view_name%TYPE;
@@ -1005,6 +1008,12 @@ CREATE OR REPLACE PACKAGE BODY fac AS
v_column_caption fac_usrrap_cols.fac_usrrap_cols_caption%TYPE;
v_column_visible fac_usrrap_cols.fac_usrrap_cols_visible%TYPE;
v_column_filter fac_usrrap_cols.fac_usrrap_cols_filter%TYPE;
v_rap_cols t_rap_col := t_rap_col();
v_column_prev fac_usrrap_cols.fac_usrrap_cols_column_name%TYPE;
v_newkey fac_usrrap_cols.fac_usrrap_cols_key%TYPE;
v_index NUMBER := 0;
BEGIN
BEGIN
SELECT SUBSTR(fac_usrrap_view_name, INSTR(fac_usrrap_view_name, '.')+1) viewname
@@ -1085,6 +1094,15 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END LOOP;
END IF;
--
-- Vul array met de huidige volgorde van kolommen
FOR rap_col IN old_rap
LOOP
v_index := v_index + 1;
v_rap_cols.EXTEND;
v_rap_cols(v_index) := rap_col;
END LOOP;
v_column_prev := '';
--
-- Nieuwe en gewijzigde kolommen
FOR c_new IN new_rap(v_viewname)
LOOP
@@ -1170,8 +1188,33 @@ CREATE OR REPLACE PACKAGE BODY fac AS
, v_column_filter
, c_new.column_datatype
, v_column_visible
);
)
RETURNING fac_usrrap_cols_key
INTO v_newkey;
--
-- Voeg nieuwe kolom toe aan array op de juiste plaats.
v_rap_cols.EXTEND;
FOR i IN REVERSE v_rap_cols.FIRST .. v_rap_cols.LAST
LOOP
IF ((i=1) OR (v_rap_cols(i-1).column_name = v_column_prev))
THEN
v_rap_cols(i).column_name := c_new.column_name;
v_rap_cols(i).column_id := v_newkey;
EXIT;
ElSE
v_rap_cols(i) := v_rap_cols(i-1);
END IF;
END LOOP;
END IF;
v_column_prev := c_new.column_name;
END LOOP;
-- Volgorde van kolommen opnieuw vastleggen.
FOR i IN v_rap_cols.FIRST .. v_rap_cols.LAST
LOOP
UPDATE fac_usrrap_cols
SET fac_usrrap_cols_volgnr = i * 10
WHERE fac_usrrap_cols_key = v_rap_cols(i).column_id;
END LOOP;
-- Update lastrefresh.
UPDATE fac_usrrap