mercoledì 30 aprile 2014

Script per record doppi

La segnalazione "La connessione è occupata dai risultati di un altro comando/statement" è determinata dalla presenza di record con chiave duplicata in una o più tabelle della base dati di SIGLA (potrebbe anche accadere che la segnalazione non sia direttamente visibile e si ottenga solo un errore generico di protezione).

La prima cosa da fare in questo caso ("connessione occupata") è un'analisi approfondita dei dati al fine di determinare se in una certa tabella esistono dei duplicati (record doppi rispetto alla chiave univoca della tabella). Inoltre l'utilizzo di database con una collating sequence di tipo CASE INSENSITIVE può aumentare la probabilità di incorrere nella presenza di record doppi.

Per l'analisi è necessario operare direttamente sulla base dati con gli strumenti messi a disposizione dal DBMS.


Lo script sotto riportato permette di controllare tutte le tabelle dei dati comuni e ditta per verificare se ci sono dei record doppi.

Script per record doppi

domenica 27 aprile 2014

Link utili per Spesometro 2013/2014 ecc.

Home page su Agenzia Entrate - Link

Provvedimento 2013/94908 del 02/08/2013 - Link

Modello e istruzioni - Link

Stati Membri Cee
http://www.comunitaeuropea.com/statimembri/
http://assistenza.agenziadogane.it/KnowledgeBases/Tel_Dogane_Procedura/attach/sistema_intrastat.pdf

Stati in black list
http://www.guidafisco.it/paesi-black-list-elenco-aggiornato-773

Codici Attività
http://www.istat.it/it/archivio/17888

Lista e codici Paesi
http://www.agenziaentrate.gov.it/wps/content/Nsilib/Nsi/Strumenti/Modelli/ModulisticaAP/Modelli+di+dichiarazione/2007/Unico+PF+2007/Fascicolo_1/6_Elenco_paesi_dei_territori+esteri1/Elenco_dei_paesi_e_dei_territori_esteri.html

https://s3.amazonaws.com/FILE-PDF/SERVIZI/BLACK-LIST/A2-ELENCO-PAESI-TERRITORI-ESTERI.pdf

Trigger "intelligenti" in DB2

Nelle vecchie versioni del DB2 non c'era la possibilità di disabilitare un trigger.

Qui sotto c'è sintassi per un trigger controllato dal valore inserito in una tabella.

Testato su Db2 Express-C 9.7.4


CREATE TRIGGER TRG_ANAMAGA_I  
AFTER INSERT ON ANAMAGA 
REFERENCING NEW AS N FOR EACH ROW
MODE DB2SQL 

WHEN ('Y' = (SELECT STATUS
            FROM USRTRIGGER_CONTROL
            WHERE TRIGGER_NAME = 'TRG_ANAMAGA_I'))

BEGIN ATOMIC  

INSERT INTO USRLOG (DATAORA,TABELLA,OPERAZIONE,CHIAVE) VALUES  ( CURRENT TIMESTAMP, 'ANAMAGA', 'I', CODICE );

END

martedì 22 aprile 2014

Estrarre la struttura di una tabella con DB2

Se si vuole conoscere la struttura di una tabella per ricrearla, DB2 mette a disposizione un tool chiamato DB2LOOK.
Il programma non si trova nella cartella BIN ma nella cartella MISC.

La sintassi è la seguente : 

db2look -d DBname [-u Creator] [-s] [-g] [-a] [-t Tname1 Tname2...TnameN] [-p] [-o Fname]
db2look -d DBname [-u Creator] [-a] [-e] [-t Tname1 Tname2...TnameN] [-m] [-c] [-r] [-o Fname]
db2look [-h]

        -d: Database name. *MUST* be specified

        -a: generate stats for all creators
        -c: do not generate commit statement for mimic
        -e: extract DDL file needed to duplicate database
        -g: use graph to show fetch page pairs for indices
        -h: more detailed help message
        -m: run the program in mimic mode
        -o: output filename
        -p: use plain text format
        -r: do not generate runstats statement for mimic
        -s: generate postscript file
        -t: generate stats for the specified tables
        -u: creator ID. If -u and -a are both not specified then
            Environment variable USER will be used

Un esempio di creazione di un file di testo contenente la struttura della tabella MOVCO del database DITTA1 dell'utente db2admin è la seguente : 
DB2LOOK -d DITTA1 -t MOVCO -o C:\MOVCO.TXT -u db2admin -p -e

domenica 6 aprile 2014

SQL UPDATE su tabella prendendo dati da altre tabelle

Una interessante sintassi per l'UPDATE su SQL SERVER

Esempio che riporta su un campo di MOVIVA la partita iva del cliente corrispondente

UPDATE MOVIVA SET MOVIVA.CODEVENTO = 'C2011' + CLIFO.PAIV
FROM MOVIVA
INNER JOIN CLIFO ON CLIFO.CODICE = MOVIVA.SOTTOCONTO
WHERE MOVIVA.DATAREG>='20110101' 

AND MOVIVA.DATAREG<='20111231'
AND MOVIVA.C_F='C'
AND MOVIVA.TIPODOCIVA='FT'


martedì 1 aprile 2014

Migliorare le prestazioni su MOVCO

Con il crescere dei movimenti alcune operazioni contabili diventano particolarmente lente. Di seguito sono elencati gli script per la generazione di due indici sulla tabella MOVCO che aumentano le prestazioni in determinate operazioni.

  • CREATE INDEX USRMOVCO1 ON MOVCO (ATT_PASSIV,SOSPESO_SN,SCADENZ_SN,DATASCAD)Velocizza presentazione effetti
  • CREATE INDEX USRMOVCO2 ON MOVCO (RIFENUMRO)Velocizza ricontabilizzazione documenti


Esempio trigger Sql Server

Esempio Trigger per rilevazioni modifiche su MOVIMAG

CREATE TRIGGER MOVIMAGUPD ON MOVIMAG
FOR UPDATE AS
INSERT INTO USRMOVIMAGSTOR (
              USRDATA, USROPERAZIONE ,          
  ESERCIZIO  , NUMERO     , RIGA       , TIPO       , 
  DATA       , ESEDOC     , NUMERODOC  , RIGADOC    , 
  TIPODOC    , DATADOC    , ESERCIPROT , NUMEROPROT , 
  RIGAPROT   , TIPOPROT   , DATAPROT   , TIPOEFFET  , 
  ESERIF     , NUMERORIF  , RIGARIF    , TIPORIF    , 
  DATARIF    , ESECOLLEG  , NUMCOLLEG  , RIGACOLLEG , 
  TIPOCOLLEG , DATACOLLEG , DATAPREEVA , ARTICOLO   , 
  VARIANTE   , STAGIONE   , MAGAZZINO  , IMBALLO    , 
  UNIMISURA  , MOVITAG_SN , TIPOTAGLIA , CALZATA    , 
  CAUSALE    , DESCRAGG   , C_F        , CLI_FOR    , 
  CONTROPART , CODVALUTA  , DATAVALUTA , CAMBIO     , 
  QUANTITA   , QUANTCONFE , EVASO      , PRNETTO    , 
  PRLORDO    , PRIVACOMPR , IVAOMAGGI  , PRLISTINO  , 
  BASERICAR  , PERCRICAR  , PRVALUTA   , PRVALUTAN  , 
  SCONTO1    , SCONTO2    , SCONTO3    , SCONTO4    , 
  SCONTO5    , MAGGIOR1   , MAGGIOR2   , CODIVA     , 
  CODLISTIN  , PESOKG     , NUMCOLLI   , NUMPARTITA , 
  AGENTE     , PROVAGENTE , CAPOZONA   , PROVCAPOZO , 
  SOSPESO_SN , NOTA_SN    , COMM_SN    , NETTO_SN   , 
  OMAGGIO_SN , DEFINIT_SN , PROVVIS_SN , MAGFISC_SN , 
  EVASION_SN , DISTINT_SN , INVENTARIO , CARICO     , 
  SCARICO    , ACARICO    , ASCARICO   , IMPEGNATO  , 
  ROTTAMATO  , ORDCLI     , ORDFORN    , ATTCOLLAUD , 
  ATTSPEDIZ  , AVALORE    , AQUANTITA  , AGG_TOTALI , 
  SELEZIONE  , NUMCARTELL , NUMCOMMESS , FILE1      , 
  FILE2      , FILE3      , UTENTE     , ULT_AGG    , 
  PRSTATISTI , PRSTATIST1 , NUMPROTRIF , PRSTATIST2 , 
  CENTRCOSTO , REVISIO_SN , AGGIORN_SN , CHIAVE_EST , 
  FORZEVA_SN , DESARTICOL , ECAMBIO    , EPRNETTO   , 
  EPRLORDO   , EPRLISTINO , EBASERICAR , UBICAZIONE , 
  MOLOTTI_SN , QTACQUISTO , PRACQUISTO , UNITAMIACQ , 
  NOTAIMP_SN , NOTASTA_SN , NOTARIP_SN , BARCODE    , 
  MATRIC_SN  , NUM_MATR  ) 
           SELECT 
              CONVERT(nvarchar(30), GETDATE(), 21), 'V1',
  ESERCIZIO  , NUMERO     , RIGA       , TIPO       , 
  DATA       , ESEDOC     , NUMERODOC  , RIGADOC    , 
  TIPODOC    , DATADOC    , ESERCIPROT , NUMEROPROT , 
  RIGAPROT   , TIPOPROT   , DATAPROT   , TIPOEFFET  , 
  ESERIF     , NUMERORIF  , RIGARIF    , TIPORIF    , 
  DATARIF    , ESECOLLEG  , NUMCOLLEG  , RIGACOLLEG , 
  TIPOCOLLEG , DATACOLLEG , DATAPREEVA , ARTICOLO   , 
  VARIANTE   , STAGIONE   , MAGAZZINO  , IMBALLO    , 
  UNIMISURA  , MOVITAG_SN , TIPOTAGLIA , CALZATA    , 
  CAUSALE    , DESCRAGG   , C_F        , CLI_FOR    , 
  CONTROPART , CODVALUTA  , DATAVALUTA , CAMBIO     , 
  QUANTITA   , QUANTCONFE , EVASO      , PRNETTO    , 
  PRLORDO    , PRIVACOMPR , IVAOMAGGI  , PRLISTINO  , 
  BASERICAR  , PERCRICAR  , PRVALUTA   , PRVALUTAN  , 
  SCONTO1    , SCONTO2    , SCONTO3    , SCONTO4    , 
  SCONTO5    , MAGGIOR1   , MAGGIOR2   , CODIVA     , 
  CODLISTIN  , PESOKG     , NUMCOLLI   , NUMPARTITA , 
  AGENTE     , PROVAGENTE , CAPOZONA   , PROVCAPOZO , 
  SOSPESO_SN , NOTA_SN    , COMM_SN    , NETTO_SN   , 
  OMAGGIO_SN , DEFINIT_SN , PROVVIS_SN , MAGFISC_SN , 
  EVASION_SN , DISTINT_SN , INVENTARIO , CARICO     , 
  SCARICO    , ACARICO    , ASCARICO   , IMPEGNATO  , 
  ROTTAMATO  , ORDCLI     , ORDFORN    , ATTCOLLAUD , 
  ATTSPEDIZ  , AVALORE    , AQUANTITA  , AGG_TOTALI , 
  SELEZIONE  , NUMCARTELL , NUMCOMMESS , FILE1      , 
  FILE2      , FILE3      , UTENTE     , ULT_AGG    , 
  PRSTATISTI , PRSTATIST1 , NUMPROTRIF , PRSTATIST2 , 
  CENTRCOSTO , REVISIO_SN , AGGIORN_SN , CHIAVE_EST , 
  FORZEVA_SN , DESARTICOL , ECAMBIO    , EPRNETTO   , 
  EPRLORDO   , EPRLISTINO , EBASERICAR , UBICAZIONE , 
  MOLOTTI_SN , QTACQUISTO , PRACQUISTO , UNITAMIACQ , 
  NOTAIMP_SN , NOTASTA_SN , NOTARIP_SN , BARCODE    , 
  MATRIC_SN  , NUM_MATR     ,   FROM DELETED;

INSERT INTO USRMOVIMAGSTOR (
              USRDATA, USROPERAZIONE ,          
  ESERCIZIO  , NUMERO     , RIGA       , TIPO       , 
  DATA       , ESEDOC     , NUMERODOC  , RIGADOC    , 
  TIPODOC    , DATADOC    , ESERCIPROT , NUMEROPROT , 
  RIGAPROT   , TIPOPROT   , DATAPROT   , TIPOEFFET  , 
  ESERIF     , NUMERORIF  , RIGARIF    , TIPORIF    , 
  DATARIF    , ESECOLLEG  , NUMCOLLEG  , RIGACOLLEG , 
  TIPOCOLLEG , DATACOLLEG , DATAPREEVA , ARTICOLO   , 
  VARIANTE   , STAGIONE   , MAGAZZINO  , IMBALLO    , 
  UNIMISURA  , MOVITAG_SN , TIPOTAGLIA , CALZATA    , 
  CAUSALE    , DESCRAGG   , C_F        , CLI_FOR    , 
  CONTROPART , CODVALUTA  , DATAVALUTA , CAMBIO     , 
  QUANTITA   , QUANTCONFE , EVASO      , PRNETTO    , 
  PRLORDO    , PRIVACOMPR , IVAOMAGGI  , PRLISTINO  , 
  BASERICAR  , PERCRICAR  , PRVALUTA   , PRVALUTAN  , 
  SCONTO1    , SCONTO2    , SCONTO3    , SCONTO4    , 
  SCONTO5    , MAGGIOR1   , MAGGIOR2   , CODIVA     , 
  CODLISTIN  , PESOKG     , NUMCOLLI   , NUMPARTITA , 
  AGENTE     , PROVAGENTE , CAPOZONA   , PROVCAPOZO , 
  SOSPESO_SN , NOTA_SN    , COMM_SN    , NETTO_SN   , 
  OMAGGIO_SN , DEFINIT_SN , PROVVIS_SN , MAGFISC_SN , 
  EVASION_SN , DISTINT_SN , INVENTARIO , CARICO     , 
  SCARICO    , ACARICO    , ASCARICO   , IMPEGNATO  , 
  ROTTAMATO  , ORDCLI     , ORDFORN    , ATTCOLLAUD , 
  ATTSPEDIZ  , AVALORE    , AQUANTITA  , AGG_TOTALI , 
  SELEZIONE  , NUMCARTELL , NUMCOMMESS , FILE1      , 
  FILE2      , FILE3      , UTENTE     , ULT_AGG    , 
  PRSTATISTI , PRSTATIST1 , NUMPROTRIF , PRSTATIST2 , 
  CENTRCOSTO , REVISIO_SN , AGGIORN_SN , CHIAVE_EST , 
  FORZEVA_SN , DESARTICOL , ECAMBIO    , EPRNETTO   , 
  EPRLORDO   , EPRLISTINO , EBASERICAR , UBICAZIONE , 
  MOLOTTI_SN , QTACQUISTO , PRACQUISTO , UNITAMIACQ , 
  NOTAIMP_SN , NOTASTA_SN , NOTARIP_SN , BARCODE    , 
  MATRIC_SN  , NUM_MATR   ) 
           SELECT 
              CONVERT(nvarchar(30), GETDATE(), 21), 'V2',
  ESERCIZIO  , NUMERO     , RIGA       , TIPO       , 
  DATA       , ESEDOC     , NUMERODOC  , RIGADOC    , 
  TIPODOC    , DATADOC    , ESERCIPROT , NUMEROPROT , 
  RIGAPROT   , TIPOPROT   , DATAPROT   , TIPOEFFET  , 
  ESERIF     , NUMERORIF  , RIGARIF    , TIPORIF    , 
  DATARIF    , ESECOLLEG  , NUMCOLLEG  , RIGACOLLEG , 
  TIPOCOLLEG , DATACOLLEG , DATAPREEVA , ARTICOLO   , 
  VARIANTE   , STAGIONE   , MAGAZZINO  , IMBALLO    , 
  UNIMISURA  , MOVITAG_SN , TIPOTAGLIA , CALZATA    , 
  CAUSALE    , DESCRAGG   , C_F        , CLI_FOR    , 
  CONTROPART , CODVALUTA  , DATAVALUTA , CAMBIO     , 
  QUANTITA   , QUANTCONFE , EVASO      , PRNETTO    , 
  PRLORDO    , PRIVACOMPR , IVAOMAGGI  , PRLISTINO  , 
  BASERICAR  , PERCRICAR  , PRVALUTA   , PRVALUTAN  , 
  SCONTO1    , SCONTO2    , SCONTO3    , SCONTO4    , 
  SCONTO5    , MAGGIOR1   , MAGGIOR2   , CODIVA     , 
  CODLISTIN  , PESOKG     , NUMCOLLI   , NUMPARTITA , 
  AGENTE     , PROVAGENTE , CAPOZONA   , PROVCAPOZO , 
  SOSPESO_SN , NOTA_SN    , COMM_SN    , NETTO_SN   , 
  OMAGGIO_SN , DEFINIT_SN , PROVVIS_SN , MAGFISC_SN , 
  EVASION_SN , DISTINT_SN , INVENTARIO , CARICO     , 
  SCARICO    , ACARICO    , ASCARICO   , IMPEGNATO  , 
  ROTTAMATO  , ORDCLI     , ORDFORN    , ATTCOLLAUD , 
  ATTSPEDIZ  , AVALORE    , AQUANTITA  , AGG_TOTALI , 
  SELEZIONE  , NUMCARTELL , NUMCOMMESS , FILE1      , 
  FILE2      , FILE3      , UTENTE     , ULT_AGG    , 
  PRSTATISTI , PRSTATIST1 , NUMPROTRIF , PRSTATIST2 , 
  CENTRCOSTO , REVISIO_SN , AGGIORN_SN , CHIAVE_EST , 
  FORZEVA_SN , DESARTICOL , ECAMBIO    , EPRNETTO   , 
  EPRLORDO   , EPRLISTINO , EBASERICAR , UBICAZIONE , 
  MOLOTTI_SN , QTACQUISTO , PRACQUISTO , UNITAMIACQ , 
  NOTAIMP_SN , NOTASTA_SN , NOTARIP_SN , BARCODE    , 
  MATRIC_SN  , NUM_MATR      FROM INSERTED;