mercoledì 4 aprile 2012

Esercizi su funzioni per date di SqlServer

Qui sotto c'è un esempio di due funzioni per la manipolazione di date su SQLServer


DATEADD aggiunge un valore ad una certa data
DATEDIFF restituisce la differenza fra due date
-------------------------------------------------------
select CODICE "Articolo", DESCRIZION "Descrizione", 
       substring(DATACREAZI,7,2)+'/'+substring(DATACREAZI,5,2)+'/'+substring(DATACREAZI,1,4) "Dt. Creazione", 
       DATEADD(year, 2, DATACREAZI) "Uscita produzione",
       substring(ULT_AGG,7,2)+'/'+substring(ULT_AGG,5,2)+'/'+substring(ULT_AGG,1,4) "Dt. Ult. Agg", 
       DATEDIFF(day, ULT_AGG, GETDATE()) "gg. dall'ult. aggiorn."
  FROM ANAMAGA
 WHERE STATO = 'S'
-------------------------------------------------------

"Uscita produzione":  2 anni successivi a DATACREAZI
"gg. dall'ult. aggiorn.":  differenza in giorni dal valore del campo ULT_AGG alla data odierna.


Grazie a Gianni per la ricerca

Riferimenti su web

  http://www.w3schools.com/sql/func_dateadd.asp
  http://www.sql-server-helper.com/tips/date-formats.aspx

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.

giovedì 26 gennaio 2012

Backup Db2

La sintassi per effettuare il backup di un database di DB2 è il seguente : 


BACKUP DATABASE db [USER user USING password ] TO path

esempio

BACKUP DATABASE SIGLAP USER db2 USING db2 TO C:\COPIADB2


La sintassi completa è qui

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

martedì 4 ottobre 2011

Tasti funzione su nuove tastiere

Sulle nuove tastiere i tasti funzioni sono dotati di funzioni speciali ( volume, multimedia, sospensione, ecc..).
Premendo il tasto Fn contemporaneamente al tasto funzione si ha la vecchia impostazione (F2 per rinomina file, F1 help ecc).
Sui computer Lenovo per attivare di default la vecchia modalità è necessario lanciare il programma "Lenovo Slim USB Keyboard", flaggare il check presente e riavviare il pc.

giovedì 29 settembre 2011

Errore installazione Sql Server Express su 64 bit

Durante l'installazione di Sql Server Express 2008 R2 64 bit Italiano su Windows 7 professional 64 bit il programma di setup mi ha restituito questo errore :
"SQL Server setup media does not support the language of the OS or does not have ENU localized files. Use the matching language-specific SQL Server media or change the OS locale through control panel."
Windows configurato in italiano e Sql Server in italiano.


Per sbloccare la situazione è stato sufficiente eseguire le seguenti operazioni :

  • Impostare le impostazioni internazionali a Italiano(Svizzera) e confermare
  • Impostare le impostazioni internazionali a Italiano(Italiano) e confermare


Magicamente (!) l'installazione parte.