FUNCTION DIM_LIS RETURN varchar2 IS RECG_ID RECORDGROUP; -- VAR_SELECT VARCHAR2(800); VAR_FROM VARCHAR2(800); VAR_WHERE VARCHAR2(800); VAR_ORDER VARCHAR2(800); VAR_GROUP VARCHAR2(800); ERRORE VARCHAR2(1000); QUERY_OK NUMBER; CONTA NUMBER; RECORD_GROUP_FAILED EXCEPTION; AL_BTN NUMBER; BEGIN -- -- Il RG si chiama POPOLA_SCH -- RECG_ID := FIND_GROUP('POPOLA_SCH'); -- Se Esiste lo Distruggo IF NOT ID_NULL(RECG_ID) THEN DELETE_GROUP(RECG_ID); END IF; -- Pulisco il Blocco MultiRecord che andro a popolare in base ai parametri di ricerca impostati. GO_BLOCK('SCH_INR_DPI_TAB'); CLEAR_BLOCK(NO_VALIDATE); -- -- Settaggio obbligatorio per la SELECT -- VAR_SELECT := ' SELECT A.COD_SCH_INR_DPI,B.IDE_LOT_DPI, C.NOM_TPL_DPI, A.DAT_PIF_INR, A.DAT_INR,D.RAG_SCL_AZL '; -- -- Settaggio obbligatorio per la WHERE -- VAR_WHERE := ' WHERE A.TPL_INR_DPI = '''||:GLOBAL.SCH_DPI||''' AND A.COD_LOT_DPI = B.COD_LOT_DPI AND B.COD_TPL_DPI = C.COD_TPL_DPI AND B.COD_AZL=D.COD_AZL'; -- -- Settaggio obbligatorio per la FROM -- VAR_FROM := ' FROM SCH_INR_DPI_TAB A, ANA_LOT_DPI_TAB B, TPL_DPI_TAB C ,ANA_AZL_TAB D'; -- -- Verifico i campi di Ricerca popolati -- IF :NB_SCH_DPI.NB_COD_AZL IS NOT NULL THEN /* in entrata nel caso sia pieno il parametro WHE_AZL viene riempito questo Item cosi e coperta anche la condizione in cui e pieno il parametro WHE_IN_AZL ma l'utente ha scelto un' azienda dalla lista */ VAR_WHERE :=VAR_WHERE||' AND D.COD_AZL = '||:NB_SCH_DPI.NB_COD_AZL; ELSE VAR_WHERE :=VAR_WHERE||' AND D.COD_AZL '||:PARAMETER.WHE_IN_AZL; END IF; IF :NB_SCH_DPI.NB_DAT_PIF_INR_DAL IS NOT NULL AND :NB_SCH_DPI.NB_DAT_PIF_INR_AL IS NOT NULL THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_PIF_INR BETWEEN TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_PIF_INR_DAL,'DDMMYYYY')||''',''DDMMYYYY'')'||' AND TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_PIF_INR_AL,'DDMMYYYY')||''',''DDMMYYYY'')'; END IF; -- IF :NB_SCH_DPI.NB_DAT_PIF_INR_DAL IS NOT NULL AND :NB_SCH_DPI.NB_DAT_PIF_INR_AL IS NULL THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_PIF_INR >= TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_PIF_INR_DAL,'DDMMYYYY')||''',''DDMMYYYY'')'; END IF; -- IF :NB_SCH_DPI.NB_DAT_PIF_INR_DAL IS NULL AND :NB_SCH_DPI.NB_DAT_PIF_INR_AL IS NOT NULL THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_PIF_INR <= TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_PIF_INR_AL,'DDMMYYYY')||''',''DDMMYYYY'')'; END IF; -- IF :NB_SCH_DPI.STA_INT = 'G' THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_INR IS NOT NULL '; ELSIF :NB_SCH_DPI.STA_INT = 'D' THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_INR IS NULL '; :NB_SCH_DPI.NB_DAT_INR_DAL := NULL; :NB_SCH_DPI.NB_DAT_INR_AL := NULL; END IF; -- IF :NB_SCH_DPI.NB_DAT_INR_DAL IS NOT NULL AND :NB_SCH_DPI.NB_DAT_INR_AL IS NOT NULL THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_INR BETWEEN TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_INR_DAL,'DDMMYYYY')||''',''DDMMYYYY'')'||' AND TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_INR_AL,'DDMMYYYY')||''',''DDMMYYYY'')'; END IF; -- IF :NB_SCH_DPI.NB_DAT_INR_DAL IS NOT NULL AND :NB_SCH_DPI.NB_DAT_INR_AL IS NULL THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_INR >= TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_INR_DAL,'DDMMYYYY')||''',''DDMMYYYY'')'; END IF; -- IF :NB_SCH_DPI.NB_DAT_INR_DAL IS NULL AND :NB_SCH_DPI.NB_DAT_INR_AL IS NOT NULL THEN VAR_WHERE := VAR_WHERE||' AND A.DAT_INR <= TO_DATE('''||TO_CHAR(:NB_SCH_DPI.NB_DAT_INR_AL,'DDMMYYYY')||''',''DDMMYYYY'')'; END IF; -- IF :NB_SCH_DPI.NB_NOM_RSP_INR IS NOT NULL THEN VAR_WHERE := VAR_WHERE||' AND A.NOM_RSP_INR LIKE '''||:NB_SCH_DPI.NB_NOM_RSP_INR||'%'''; END IF; -- IF :NB_SCH_DPI.NB_NOM_TPL_DPI IS NOT NULL THEN VAR_WHERE := VAR_WHERE||' AND C.NOM_TPL_DPI LIKE '''||:NB_SCH_DPI.NB_NOM_TPL_DPI||'%'''; END IF; -- IF :NB_SCH_DPI.NB_IDE_LOT_DPI IS NOT NULL THEN VAR_WHERE := VAR_WHERE||' AND B.IDE_LOT_DPI LIKE '''||:NB_SCH_DPI.NB_IDE_LOT_DPI||'%'''; END IF; -- -- Variabili contenenti l'istruzioni per il creare il Record Group -- IF :NB_SCH_DPI.RG_GROUP = 'N' THEN -- -- Setto correttamente l'istruzione dell'ORDER BY nel caso non sia stato valorizzato -- nessun tipo di raggruppamento -- IF NVL(:NB_VAR_PIF,'X') = 'X' AND NVL(:NB_VAR_INR,'X') = 'X' THEN -- VAR_GROUP := ' ORDER BY '||SUBSTR(:NB_VAR_PIF,2,LENGTH(:NB_VAR_PIF)); -- ELSIF NVL(:NB_VAR_PIF,'X') != 'X' AND NVL(:NB_VAR_INR,'X') = 'X' THEN -- VAR_GROUP := ' ORDER BY '||SUBSTR(:NB_VAR_PIF,2,LENGTH(:NB_VAR_PIF)); -- ELSIF NVL(:NB_VAR_PIF,'X') = 'X' AND NVL(:NB_VAR_INR,'X') != 'X' THEN -- VAR_GROUP := ' ORDER BY '||SUBSTR(:NB_VAR_INR,2,LENGTH(:NB_VAR_INR)); -- END IF; -- RECG_ID := CREATE_GROUP_FROM_QUERY('POPOLA_SCH',VAR_SELECT ||VAR_FROM ||VAR_WHERE ||VAR_GROUP); :PARAMETER.PER_PRT:=VAR_WHERE ||VAR_GROUP; -- ELSIF :NB_SCH_DPI.RG_GROUP = 'T' THEN -- VAR_GROUP := ' ORDER BY C.NOM_TPL_DPI '; -- IF :NB_VAR_PIF = 'X' THEN :NB_VAR_PIF := ''; END IF; -- IF :NB_VAR_INR = 'X' THEN :NB_VAR_INR := ''; END IF; -- RECG_ID := CREATE_GROUP_FROM_QUERY('POPOLA_SCH',VAR_SELECT ||VAR_FROM ||VAR_WHERE ||VAR_GROUP ||:NB_VAR_PIF ||:NB_VAR_INR); :PARAMETER.PER_PRT:=VAR_WHERE ||VAR_GROUP||:NB_VAR_PIF ||:NB_VAR_INR; -- ELSIF :NB_SCH_DPI.RG_GROUP = 'L' THEN VAR_GROUP := ' ORDER BY B.IDE_LOT_DPI '; -- IF :NB_VAR_PIF = 'X' THEN :NB_VAR_PIF := ''; END IF; -- IF :NB_VAR_INR = 'X' THEN :NB_VAR_INR := ''; END IF; -- RECG_ID := CREATE_GROUP_FROM_QUERY('POPOLA_SCH',VAR_SELECT ||VAR_FROM ||VAR_WHERE ||VAR_GROUP ||:NB_VAR_PIF ||:NB_VAR_INR); -- :PARAMETER.PER_PRT:=VAR_WHERE ||VAR_GROUP||:NB_VAR_PIF ||:NB_VAR_INR; ELSIF :NB_SCH_DPI.RG_GROUP = 'A' THEN VAR_GROUP := ' ORDER BY D.RAG_SCL_AZL '; -- IF :NB_VAR_PIF = 'X' THEN :NB_VAR_PIF := ''; END IF; -- IF :NB_VAR_INR = 'X' THEN :NB_VAR_INR := ''; END IF; -- RECG_ID := CREATE_GROUP_FROM_QUERY('POPOLA_SCH',VAR_SELECT ||VAR_FROM ||VAR_WHERE ||VAR_GROUP ||:NB_VAR_PIF ||:NB_VAR_INR); :PARAMETER.PER_PRT:=VAR_WHERE ||VAR_GROUP||:NB_VAR_PIF ||:NB_VAR_INR; -- END IF; -- -- QUERY_OK := POPULATE_GROUP(RECG_ID); ERRORE := VAR_SELECT||VAR_FROM||VAR_WHERE||VAR_GROUP|| VAR_ORDER; IF QUERY_OK <> 0 THEN IF QUERY_OK = 1403 THEN RAISE NO_DATA_FOUND; ELSE RAISE RECORD_GROUP_FAILED; END IF; END IF; -- Conto il numero di Record estrapolati con il Record Group CONTA := GET_GROUP_ROW_COUNT(RECG_ID); -- -- Richiamo la procedura per il caricamento della Griglia -- GRIGLIA(CONTA); GO_BLOCK('SCH_INR_DPI_TAB'); GO_RECORD(1); RETURN(ERRORE); EXCEPTION WHEN RECORD_GROUP_FAILED THEN AL_BTN:= IMPOSTA_ALERT('FRM-40508', :PARAMETER.COD_LNG); RETURN 'ERROR_TRUE'; WHEN NO_DATA_FOUND THEN AL_BTN:= IMPOSTA_ALERT('FRM-41830', :PARAMETER.COD_LNG); RETURN 'NO_DATA'; WHEN OTHERS THEN AL_BTN:= IMPOSTA_ALERT('FRM-40508', :PARAMETER.COD_LNG); RETURN 'ERROR_OTHER'; END;