Vai al contenuto

DFN023 - Importazione tabelle

Posizione nel menu Programma non a menu Linkage section UTILDBFPRG - Linkage comune Nome processo: CONTATTI Tabella: DFTABELLE - Tabelle generiche Logica generale Sincronizzazione delle tabelle generiche tra AREA e il DB frontiera. In funzione della classe tabelle, potrebbe importare su COGTABEL o su tabelle diverse. NB: diamo per scontato che la tabella viene aggiornata dal gestionale host in modo puntuale, quindi si può esaminare ogni singolo record in modo indipendente senza preoccuparsi dei restanti dati della stessa tabella. Per il momento funziona solo in IMPORT Relazione tra tabella HOST e tabella AREA E' stata introdotta la tabella DFRACCORDOTABELLE, che permette di rendere flessibile il raccordo tra una tabella presente in DFTABELLE e la relativa tabella in AREA. Se una tabella da importare è presente in questa tabella di raccordo, verrà importata. Altrimenti verrà ignorata. NB: nel caso di tabelle raccordate su COGTABEL o COGGENER, è possibile che il codice fornito dal db host sia più lungo di quello indicato su AREA. Quindi a questo punto ci sono 2 casi: * Il codice su AREA è già presente, e già raccordato: nessun problema * Il codice su AREA non è presente: si dovrà creare il raccordo manualmente, a patto che sil programma tenta di inserirlo troncandolo, ma in questo caso potrebbero esserci dei duplicati, quindi in questo caso il sistema tenterà di attribuire un nuovo codice "a caso" tra quelli liberi. Per il momento è gestito solo il primo caso: quindi è necessario che le tabelle collegate a COGGENER o COGTABEL abbiano già DF-TAB-COD-AREA valorizzato. Configurazioni possibili

Gruppo Parametro Note
dbfront sincro-attiva
dbfront email-segnalazioni
dbfront db-tipo
dbfront db-conn-string
dbfront db-log-level

Elaborazione Tipi di segnalazione: Vedi Tipi di segnalazione A - Controllo di esecuzione Vedi Controllo di esecuzione B - Apertura B.1 Apertura tabelle Tentare l'apertura della tabella da sincronizzare: DFTABELLE. Se fallita inviare una Segnalazione grave e chiudere. Tentare l'apertura della tabella semaforo: DFSEMAFORO. Se fallita inviare una Segnalazione grave e chiudere. B.2 Blocco semaforo Lettura del record DFSEMAFORO:

Nome campo Note
DF_SMF_TABELLA DFTABELLE

Se il record non esiste inserirlo. Se risulta bloccato dal gestonale host (DF_SMF_USO_HOST = 1) Informazione sul log e chiudere. Dopodichè aggiornare il semaforo impostando:

Nome campo Note
DF_SMF_USO_AREA 1
DF_SMF_VERSIONE Versione attuale: 1

B.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:

Dato Contenuto
DBFST-STATO "I"
DBFST-ATT-DATA Data sistema
DBFST-ATT-ORA Ora sistema
DBFST-SCHED-DATA Sommare il tempo di attesa a data/ora sistema
DBFST-SCHED-ORA
DBFST-ERRORI 0
DBFST-MSG-ERRORE " "
DBFST-LOG-PROCEDURA " "

C - Sincronizzazione (Importazione) C.1 Operazioni preliminari C.1.1 Lettura raggruppamenti gerarchici Caricare in una tabella interna al programma il contenuto di COGRAGGR, allo scopo di velocizzare la ricerca successiva. C.1.2 Lettura tabelle raccordate Caricare in una tabella interna al programma il contenuto di DFRACCORDOTABELLE C.2 Selezione record da importare Tramite un comando SQL specifico, estrazione di tutti i record aggiornati dall'HOST: SELECT * FROM dftabelle WHERE df_tab_agg_host = 1 C.2.1 Controllo record Per ciascun record letto, verificare la correttezza delle informazioni contenute: Controllo DF_TAB_CLASSE Questa informazione deve essere significativa, e può contenere una delle seguenti classi: * "M" (Tabelle collegate a raggruppamenti gerarchici) Altrimenti segnalare Errore . Controllo DF_TAB_TIPO Questa informazione deve essere significativa. Altrimenti segnalare Errore Controllare se il tipo è previsto nella tabella di raccordo. Se si, proseguire con l'importazione, altrimenti ignorare il record.

DF-RTAB-TABELLA-AREA Elaborazione Note
COGTABEL La tabella sarà sincronizzata con la tabella dove
EUTA-TIPO = DF-RTAB-TA-COD
COGANRAG La tabella sarà sincronizzata con un raggruppamento gerarchico dove:
ARAG-CLASSE = DF-RTAB-TA-COD

Per mantenere compatibilità con la gestione precedente, in assenza di raccordo il programma tenterà comunque l'elaborazione precedente: * DF_TAB_CLASSE="M": deve corrispondere ad una classe di raggruppamenti gerarchici: eseguire quindi una ricerca sulla tabella caricata in precedenza; il codice presente in DF-TAB-TIPO deve corrispondere ad un "Codice host" (TRGR-CODICE-HOST) o ad una classe raggruppamento (TRGR-CLASSE). Se non è nè l'uno nè l'altro, segnalare Errore; Altrimenti associare alla tabella il tipo corretto da usare successivamente in importazione Controllo DF_TAB_COD_HOST Questa informazione deve essere significativa. Altrimenti segnalare Errore Controllo DF_TAB_VAL Questa informazione può contenere "C" o " ". Altrimenti segnalare Errore C.3 Importazione record Se tutti i controlli sono superati, proseguire con l'importazione del record A seconda dei casi descritti in precedenza, potrebbe essere un inserimento, una variazione o una cancellazione C.3.1 Importazione record su COGANRAG In base ai ragionamenti precedenti, se la tabella da aggiornare è COGANRAG si prosegue in questo modo: Ricerca del record e aggiornamento

Nome campo Note
ARAG-CLASSE La classe raggruppamento collegata al record, trovata sulla tabella di raccordo caricata in precedenza (corrisponde ad un TRGR-CLASSE)
ARAG-TIP "R"
ARAG-ID DF_TAB_COD_HOST (per il momento diamo per scontato che ci sia corrispondenza)

A questo punto i casi possono essere:

DF_TAB_VAL Il record esiste? Attività
"C" Si Cancellare il record (non esiste la cancellazione logica su COGANRAG)
"C" No Non facciamo nulla
" " Si Aggiornamento
" " No Inserimento

Sia in caso di inserimento che in caso di aggiornamento, andremo ad aggiornare i dati mancanti:

Nome campo Note
ARAG-DES DF_TAB_DES
ARAG-ID-PADRE " " (per il momento non gestiamo la gerarchia)

C.4 Aggiornamento del record su DFTABELLE

Nome campo Contenuto
DF_TAB_AGG_HOST 0
DF_TAB_AGG_AREA 1
DFTAB_COD_AREA ARAG-ID

D - Sincronizzazione (esportazione) Fase non prevista in questo programma E - Chiusura E.1 Rilascio semaforo Aggiornare il record semaforo relativo a DFTABELLE, impostando

Nome campo Note
DF_SMF_USO_AREA 0

E.2 Chiusura tabelle Chiudere le tabella DFTABELLE e DFSEMAFORO E.3 Aggiornamento stato Aggiornamento dello stato sul record specifico; in particolare:

Dato Contenuto
DBFST-STATO "A"
DBFST-ERRORI Numero di errori rilevati
DBFST-MSG-ERRORE Ultimo errore rilevato
DBFST-LOG-PROCEDURA Codice procedura di gestione log

Estratto da documentazione interna ClickUp