Visualizzazione post con etichetta Sigla. Mostra tutti i post
Visualizzazione post con etichetta Sigla. Mostra tutti i post

giovedì 20 ottobre 2022

Per leggere il contenuto di un campo IMAGE di SqlServer è necessario, semplicemente convertire il campo in VARBINARY e poi in VARCHAR

la seguente query applicata alle fatturazione elettronica di Sigla, elenca tutte le fatture scartate e in due campi indica se lo scarto è relativo al formato (mancanza codice fiscale ) o al codice fiscale errato

WITH DATI AS (

 SELECT DATAFAT,NUMFAT,PIVA,

   CONVERT(VARCHAR(1000),CONVERT(VARBINARY(1000),R.FILEXML)) ERR

 FROM NOTEXML N INNER JOIN RIGHEXML R ON N.IDRIGA=R.IDRIGA

 INNER JOIN TESTAXML T ON N.IDTESTATA=T.IDTESTATA

 WHERE TIPONOTIF='Notifica di scarto'

   AND T.STATO='S' 

   AND SUBSTRING(T.STATOFAT,6,1)='2'

)

SELECT DATAFAT,NUMFAT,PIVA,

       CHARINDEX('00200',ERR) ERR200_FORMATO,

       CHARINDEX('00306',ERR) ERR306_CF,

       ERR

FROM DATI


 

lunedì 4 dicembre 2017

Creazione User in Sql Server

Per una installazione ho avuto necessità di gestire più utenti all'interno dello stesso database.

Quindi richiamare un dato con :
SELECT * FROM . invece del normale SELECT * FROM dove l'user dbo è sottinteso.

i comandi da eseguire sono i seguenti ( ho messo i comandi perché quando si creano 50 utenti si fa prima tramite i comandi che tramite l'SqlManagement) :


USE [master] 
GO
-- Creazione utente per il login a livella di istanza
CREATE LOGIN ['<login>'] WITH PASSWORD=N'<password>', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO

-- Da qui tutti i comandi sono specifici per il database
USE ['<Database>']
GO
-- Creazione utente del DB collegato all'utente di login
CREATE USER ['<user>'] FOR LOGIN ['<login>'] WITH DEFAULT_SCHEMA=['<schema>']
GO

-- Creazione Schema
CREATE SCHEMA ['<schema>'] AUTHORIZATION ['<user>']
GO

-- Aggiunta del ruolo db_ddladmin all'utente altrimenti non può creare e gestire le tabelle
EXEC sp_addrolemember N'db_ddladmin', N'<user>'
GO

Nel mio esempio reale '<login>','<password>','<user>' e '<schema>' avevano tutti lo stesso valore. (es. Ditta1)

Con questa struttura ho un solo database con tanti schema all'interno.

Con questo procedimento, per quanto riguarda Sigla, ho la stringa di connessione fatta così : 
DSN=DB1;UID=DITTA1;PWD=DITTA1;
DSN=DB1;UID=DITTA2;PWD=DITTA2;
ecc.

A livello di supporto una volta collegato al database DB1 posso lavorare con le tabelle usando :
SELECT * FROM DITTA1.DPCONFIG
Significa leggere la tabella DPCONFIG dello schema DITTA1 del database DB1

Aggiunta :
a seguito di un RESTORE DATABASE, dopo il CREATE LOGIN è sufficiente fare :

ALTER USER <user> WITH LOGIN=[<login>], DEFAULT_SCHEMA=[<schema>]

per riassociare l'utente del db all'utente dell'istanza 

venerdì 11 settembre 2015

Funzioni con parametri in SQL Server che restituiscono tabelle

In Sql Server è possibile creare delle funzioni passandogli dei parametri a avere in ritorno una tabella.
Una specie di vista con parametri

La sintassi è
CREATE FUNCTION ( )
RETURN TABLE AS
RETURN

SELECT * FROM
WHERE =@Parametro
)

Nel mio caso specifico avevo bisogno di una vista che passandogli il magazzino e gli estremi delle date mi restituisse le giacenze del magazzino e del periodo di date indicato



CREATE FUNCTION dbo.VDgaTest (@Magazzino CHAR(3),@DaData CHAR(8), @AData CHAR(8))
RETURNS TABLE
AS
RETURN
(
     select ARTICOLO,
     round(sum ( 
     case 
      when INVENTARIO =  '+'  then QUANTITA
      when INVENTARIO =  '-'  then QUANTITA*-1 
      when CARICO =  '+'  then QUANTITA    
      when CARICO =  '-'  then QUANTITA*-1
      when ACARICO =  '+'  then QUANTITA  
      when ACARICO =  '-'  then QUANTITA*-1
      when SCARICO =  '-'  then QUANTITA
      when SCARICO =  '+'  then QUANTITA*-1 
      when ASCARICO =  '-'  then QUANTITA 
      when ASCARICO =  '+'  then QUANTITA*-1
     end),4) GIACENZA
    from MOVIMAG
    where 1=1
    and DATA>= @DaData 
    and DATA<= @AData 
    and TIPO <>  '..' 
    AND MAGAZZINO=@Magazzino
    group by ARTICOLO
)

La funzione si richiama semplicemente con un :
SELECT * FROM vDgaTest('000','20150101','20150831')


venerdì 12 giugno 2015

Rinumerazione cespiti - script sql

Il seguente script rinumera tutti i cespiti presenti in archivio

DECLARE @Codice CHAR(5)  
DECLARE @Categoria CHAR(3)
DECLARE @cmd NVARCHAR(500)  
DECLARE @Conta INT
DECLARE @ContaA CHAR(5)

DECLARE Categoria CURSOR FOR  
  SELECT distinct CATEGORIA FROM CESPITI  
  ORDER BY CATEGORIA

OPEN Categoria 
FETCH NEXT FROM Categoria INTO @Categoria
WHILE @@FETCH_STATUS = 0 BEGIN  
    SET @Conta = 0

    SET @cmd = 'DECLARE Cespiti CURSOR FOR  ' + 
               '    SELECT CODICE FROM CESPITI  ' +  
               '    WHERE CATEGORIA=' + '''' + @Categoria + '''' +  
               '    ORDER BY CODICE';  
    EXEC (@cmd)  

    OPEN Cespiti  
    FETCH NEXT FROM Cespiti INTO @Codice  
    WHILE @@FETCH_STATUS = 0 BEGIN  
           SET @Conta = @Conta + 1           
           SET @ContaA = Right('00000'+RTrim(LTrim(CAST(@Conta as CHAR(5)))),5)

           SET @cmd = 'UPDATE CESPITI SET CODICE=' + '''' + @ContaA + ''''+  ',' + 
                      ' CODPADRE=' + '''' + @ContaA + '''' + 
                      ' WHERE CATEGORIA=' + '''' + @Categoria + '''' +  
                      ' AND CODICE=' + '''' + @Codice + ''''
           EXEC (@cmd)  

           SET @cmd = 'UPDATE MOVCE SET CODCESPITE=' + '''' + @ContaA + ''''+  ',' + 
                      ' CODPADRE=' + '''' + @ContaA + '''' + 
                      ' WHERE CATEGORIA=' + '''' + @Categoria + '''' +  
                      ' AND CODCESPITE=' + '''' + @Codice + ''''
           EXEC (@cmd) 

           FETCH NEXT FROM Cespiti INTO @Codice  
    END  
    CLOSE Cespiti  
    DEALLOCATE Cespiti 

    -- Allinea il numeratore
    SET @Conta = @Conta + 1
    SET @ContaA = Right('00000'+RTrim(LTrim(CAST(@Conta as CHAR(5)))),5)
    SET @cmd = 'UPDATE NUCESP SET NUMEROCESP=' + '''' + @ContaA + '''' + 
                  ' WHERE CATEGORIA=' + '''' + @Categoria + ''''; 
    EXEC (@cmd) 


    FETCH NEXT FROM Categoria INTO @Categoria
end
CLOSE Categoria
DEALLOCATE Categoria

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

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;

martedì 29 ottobre 2013

Sigla++ e Mysql

Dalla versione 4.12 Sigla crea due tabelle (SIGLIC e LICLOG) con campi Timestamp.

Il driver ODBC di Mysql gestisce correttamente questo campo solo dalla versione 3.51.28.

I driver antecedenti provocano un errore nella creazione della tabella.

martedì 8 gennaio 2013

Variabili di configurazione database DB2

Dopo l'installazione di DB2 è necessario modificare dei valori di configurazione
I seguenti valori sono per le versioni di DB2 antecedenti alla 9


db2 update dbm cfg using QUERY_HEAP_SZ 1000 

db2 update db cfg for DITTA1 using APPLHEAPSZ 512
db2 update db cfg for DITTA1 using PCKCACHESZ 128 
db2 update db cfg for DITTA1 using BUFFPAGE 1024 
db2 update db cfg for DITTA1 using NUM_IOCLEANERS 3 
db2 update db cfg for DITTA1 using NUM_IOSERVERS 9 
db2 update db cfg for DITTA1 using LOCKLIST 150 
db2 update db cfg for DITTA1 using MAXAPPLS  
db2 update db cfg for DITTA1 using AVG_APPLS   
db2 update db cfg for DITTA1 using LOGFILSIZ 256 
db2 update db cfg for DITTA1 using LOGPRIMARY  
db2 update db cfg for DITTA1 using LOGSECOND  


I seguenti valori sono per le versioni di DB2 uguali o superiori alla 9


db2 update dbm cfg using QUERY_HEAP_SZ 1000 

db2 update db cfg for DITTA1 using APPLHEAPSZ 2048
db2 update db cfg for DITTA1 using APPL_MEMORY 40016
db2 update db cfg for DITTA1 using BUFFPAGE 16384
db2 update db cfg for DITTA1 using DBHEAP 600
db2 update db cfg for DITTA1 using NUM_IOCLEANERS 3 
db2 update db cfg for DITTA1 using NUM_IOSERVERS 9 
db2 update db cfg for DITTA1 using LOCKLIST 300
db2 update db cfg for DITTA1 using SORTHEAP 1024
db2 update db cfg for DITTA1 using AVG_APPLS   
db2 update db cfg for DITTA1 using LOGFILSIZ 256 
db2 update db cfg for DITTA1 using LOGPRIMARY  
db2 update db cfg for DITTA1 using LOGSECOND  
db2 update db cfg for DITTA1 using PCKCACHESZ 128 
db2 update db cfg for DITTA1 using MAXAPPLS  

martedì 8 maggio 2012

Ricalcolo saldi contabili ( Tasalsot )

La seguente query ricrea TASALSOT ( che quindi deve essere svuotato prima ).
La query è per SqlServer
Per gli altri db basta spostituire il funzione ISNULL con VALUE,NVL,IFNULL a seconda del db


INSERT INTO TASALSOT
SELECT CODICE,PIACON.SOTTOCONTO,
       ISNULL(LIRE.DARE,0) DARE,
       ISNULL(LIRE.AVERE,0) AVERE,
       ISNULL(LIRE.DAREINIT,0) DAREINIT,
       ISNULL(LIRE.AVEREINIT,0) AVEREINIT,
       ISNULL(LIRE.EDARE,0) EDARE,
       ISNULL(LIRE.EAVERE,0) EAVERE,
       ISNULL(LIRE.EDAREINIT,0) EDAREINIT,
       ISNULL(LIRE.EAVEREINIT,0) EAVEREINIT,
       DATULTMOV,
       NUMULTMOV
 FROM PIACON INNER JOIN ESC ON 1=1
LEFT OUTER JOIN (SELECT ESECOMPET,SOTTOCONTO,
                        SUM(CASE WHEN SEGNO='D' THEN IMPORTO ELSE 0 END) DARE,
                        SUM(CASE WHEN SEGNO='A' THEN IMPORTO ELSE 0 END) AVERE,
                        SUM(CASE WHEN SEGNO='D' AND TIPOCAUSAL='A' THEN IMPORTO ELSE 0 END) DAREINIT,
                        SUM(CASE WHEN SEGNO='A' AND TIPOCAUSAL='A' THEN IMPORTO ELSE 0 END) AVEREINIT,
                        SUM(CASE WHEN SEGNO='D' THEN EIMPORTO ELSE 0 END) EDARE,
                        SUM(CASE WHEN SEGNO='A' THEN EIMPORTO ELSE 0 END) EAVERE,
                        SUM(CASE WHEN SEGNO='D' AND TIPOCAUSAL='A' THEN EIMPORTO ELSE 0 END) EDAREINIT,
                        SUM(CASE WHEN SEGNO='A' AND TIPOCAUSAL='A' THEN EIMPORTO ELSE 0 END) EAVEREINIT,
                        MAX(DATAREG) DATULTMOV,
                        MAX(NUMERO) NUMULTMOV
                 FROM MOVCO 
                 WHERE SOSPESO_SN='N'
                 AND TEMPORA_SN='N'
                 AND SIMULAZ_SN='N'
                 AND SOLOANA_SN<>'S'
                 GROUP BY ESECOMPET,SOTTOCONTO) LIRE ON ESC.CODICE=LIRE.ESECOMPET AND PIACON.SOTTOCONTO=LIRE.SOTTOCONTO                 
                 ORDER BY ESC.CODICE,PIACON.SOTTOCONTO

giovedì 29 marzo 2012

Query per dati registro cespiti di prova

La query di cui sotto restituisce gli stessi dati ( a dir la verità mi mancano le rivalutazioni/svalutazioni ) che vengono stampati durante la stampa di prova del registro cespiti

Dopo la stampa definitiva, la query deve essere rivista.

La query estrae i dati dettagliati per cespite. E' sufficiente utilizzare i subtotali di Excel per totalizzare per Categoria

PS. La query è fatta per ORACLE ( la variazioni per altri db sono semplici ) 

------------- Inizio Testo Query -----------------------------------------------
select  
c.categoria,cat.descrizion,c.codice,c.descrizion,
substr(datainiamm,7,2)||'/'||substr(datainiamm,5,2)||'/'||substr(datainiamm,1,4) Data_Ini_Amm,
case 
when acq.datareg is not null then
  substr(acq.datareg,7,2)||'/'||substr(acq.datareg,5,2)||'/'||substr(acq.datareg,1,4) 
end
  Data_Acq,
c.numfatfor,
substr(c.datafatfor,7,2)||'/'||substr(c.datafatfor,5,2)||'/'||substr(c.datafatfor,1,4) data_fatt_for, 
nvl(acq.eimporto,0) imp_acq,

c.evaloreini costo_sto,c.ebaseammor base_amm,
c.eresiduoam-nvl(amm.eimporto,0) residuo_amm, c.eimpnonamm non_amm,
c.etotaleamm+nvl(amm.eimporto,0) fondo_amm,
nvl(ali.eimporto,0) ali_anno,
nvl(amm.eimporto,0) amm_anno,
c.eplusval-c.eminusval plus_min,

c.eresiduocv-nvl(amm.eimpammciv,0) residuo_amm_civ,
c.eplusciv-c.eminusciv plus_min_civ,
c.efondociv+nvl(amm.eimpammciv,0) fondo_civ,
nvl(amm.eimpammciv,0) amm_civ_anno,

nvl(ali.etotaleamm,0) ali_anno_tot_fondo,
nvl(ali.eimpammort,0) ali_tot_costo_storico,
nvl(ali.etotammciv,0) ali_anno_tot_fondo_civ,

c.evaloreini-nvl(ali.eimpammort,0) netto_ali_costo_sto,
c.etotaleamm+nvl(amm.eimporto,0)-nvl(ali.etotaleamm,0) netto_ali_fondo_amm,
c.efondociv+nvl(amm.eimpammciv,0)-nvl(ali.etotammciv,0) netto_ali_fondo_amm_civ,

nvl(amm.eimporto,0) importo_amm,
nvl(amm.eimpammciv,0) importo_amm_civ,
nvl(AMm.Percamm,0) pct_amm,
nvl(AMm.Perc_civ,0) pct_civ

from 
( select * from cespiti
 where 1=1
 and codice is not null
 and ( 
 (datainiamm < '2012')
   or
 (exists ( select 1 from movce m1 where m1.categoria=cespiti.categoria and m1.codcespite=cespiti.codice and tipomov='A' and esereg='2011') 
 ))
 and (
 (alienat_sn='N') or
 ( alienat_sn='S' and exists ( select 1 from movce m1 where m1.categoria=cespiti.categoria and m1.codcespite=cespiti.codice and tipomov='L' and esereg='2011')
  )

 )
) c 
inner join siglapp.catbeni cat on c.categoria=cat.codice
left outer join (
select * from movce where esereg='2011'
and tipomov='M') amm
on c.categoria=amm.categoria
and c.codice=amm.codcespite
left outer join (
select * from movce where esereg='2011'
and tipomov='L') ali
on c.categoria=ali.categoria
and c.codice=ali.codcespite

left outer join (
select * from movce where esereg='2011'
and tipomov='A') acq
on c.categoria=acq.categoria
and c.codice=acq.codcespite
order by c.categoria,c.codice
------------- Fine Testo Query -----------------------------------------------

mercoledì 8 febbraio 2012

Sigla non supporta Mysql 5.5

Mysql 5.5 non è supportato alla data odierna ( 08/02/2012 ) da Sigla++.

In fase di creazione di una tabella su Mysql, Sigla inserisce al termine dello statement SQL, la stringa TYPE=InnoDb

In MySql 5.5 tale opzione è stata sostituita con l'opzione ENGINE=InnoDb

Quindi in fase di creazione delle tabelle, Sigla si schianta.

venerdì 25 novembre 2011

Creazione Database Db2

Quando si crea un database con le ultime versioni di Db2 (9.7.4 Express), il sistema la crea per la regione Italia. 
In questo caso ci sono dei problemi su alcuni caratteri che non vengono riconosciuti e generano degli errori.
Per ovviare al problema è sufficiente specificare, durante la creazione del database, la regione Stati Uniti o altrimenti, da riga di comandi, lanciare il comando:

CREATE DATABASE DITTA2 AUTOMATIC STORAGE YES  ON 'C:\' DBPATH ON 'C:\' USING CODESET 1252 TERRITORY US COLLATE USING SYSTEM PAGESIZE 4096