mercoledì 1 settembre 2010

Vista per prezzo listino attuale

Sigla gestisce la data di inizio validità sui listini.
Per reperire velocemente l'ultimo prezzo di un articolo, ho creato una vista :

CREATE VIEW VLISTINO AS
SELECT TABRILIS.* FROM

TABRILIS,
( SELECT CODICE,ARTICOLO,MAX(DATAINVALI) DATAINVALI from TABRILIS
GROUP BY CODICE,ARTICOLO ) LIST
WHERE TABRILIS.CODICE=LIST.CODICE
AND TABRILIS.ARTICOLO=LIST.ARTICOLO
AND TABRILIS.DATAINVALI=LIST.DATAINVALI

Per interrogarla basta fare :
SELECT PREZZO FROM VLISTINO
WHERE ARTICOLO=''
AND CODICE='

giovedì 5 agosto 2010

Query per contare i record nelle tabelle

Queste due query servono per estrarre un elenco delle tabelle e dei record in esse contenute.

1) QUERY SCRIPT PER GENERAZIONE QUERY DI CONTA:
x SQL Server;
select '( SELECT ''', sys.tables.name ,'''AS TABELLA, COUNT(*) AS TROVATI FROM ', sys.tables.name,') UNION '
from sys.tables
order by sys.tables.name

x Oracle;
select '( SELECT '''|| table_name ||''' AS TABELLA, COUNT(*) AS TROVATI FROM '|| table_name||') UNION '
from sys.all_tables
 WHERE OWNER='DITTA1'
order by table_name

NB. per Oracle è sufficiente interrogare la vista sys.table_name, anche se il campo NUM_ROWS non mi sembra aggiornato in tempo reale

SELECT table_name,num_rows 
FROM sys.all_tables
WHERE owner='DITTA1'
ORDER BY num_rows DESC

Lanciare la query sopra con l'estrazione in formato testo (CTRL+T x formato
testo, CTRL+E per eseguire dal Query Analizer )

2) QUERY GENERATA:

(SELECT 'AGENTI ' AS TABELLA, COUNT(*) AS TROVATI FROM AGENTI ) UNION
(SELECT 'AGGRART ' AS TABELLA, COUNT(*) AS TROVATI FROM AGGRART ) UNION
.
.
(SELECT 'VERINPS ' AS TABELLA, COUNT(*) AS TROVATI FROM VERINPS ) UNION
(SELECT 'VETTORI ' AS TABELLA, COUNT(*) AS TROVATI FROM VETTORI )

Togliere come sopra l'ultima UNION;

Copiare la seconda query così generata e lanciarla al posto della prima:
ogni volta che si lancia restituisce il recordcount di ogni tabella.

Thanks Gianni

giovedì 8 luglio 2010

Errore "Could not continue scan with NOLOCK due to data movement"

cercare la tabella su cui da il problema, con il trace ODBC.

quindi cancellare gli indici della tabella e ricrearli

Editare il file Hosts con Windows Vista / Seven

Per modificare il file HOSTS o LMHOSTS basta entrare nel menù START, scegliere TUTTI I PROGRAMMI

aprire il BLOCCO NOTE con il tasto destro e selezionare ESEGUI COME AMMINISTRATORE

viene chiesto o di inserire la password di amministratore, digitando la password e successivamente fare un click su CONSENTI.

A questo punto basterà caricare il file HOSTS o LMHOSTS dal percorso:

\Windows\System32\drivers\etc\

Ora potremo editare il file selezionato, e successivamente basterà selezionare SALVA dal menu MODIFICA.

Preso da qui

venerdì 2 luglio 2010

BDE e DB2

Spesso mi è capitato sulle installazioni di Sigla++ con personalizzazioni, che
aprendo contemporaneamente due sigla o sigla e altri programmi che usano
bde, il secondo aperto andasse in errore.
Il problema si risolve impostando due parametri sulla configurazione del
bde.

1) Start | Pannello di controllo | BDE Administrator
2) Tab Configuration - Configuration / System / INIT
3) Impostare:
SHAREDMEMLOCATION: 3000
SHAREDMEMSIZE: 30000

4) Tasto dx su INIT -> Apply;
5) Come da messaggio, riavviare tutte le applicazioni che usano bde se
rimaste aperte.

Thanks Gianni

giovedì 8 aprile 2010

Vista per giacenze

La seguente vista permette di reperire la giacenza attuale su un magazzino o su tutti (MAGAZZINO IS NULL)

versione 2014 aggiornata più corretta

CREATE VIEW VGIACENZA AS 
SELECT MAGAZZINO,ARTICOLO,
SUM(INVENTARIQ +CARICOQ+ALTRICARIQ-SCARICOQ- ALTRISCARQ) GIACENZA
FROM GIACESE,
( SELECT MAX(CODICE) CODICE FROM ESC WHERE DPF1='S'
  UNION
  SELECT MAX(CODICE) CODICE FROM ESC WHERE DPF2='N'
) ESC1
WHERE ESERCIZIO=CODICE
GROUP BY MAGAZZINO,ARTICOLO


vecchia versione

CREATE VIEW VGIACENZA AS
SELECT MAGAZZINO,ARTICOLO,
SUM(INVENTARIQ +CARICOQ+ALTRICARIQ-SCARICOQ- ALTRISCARQ) GIACENZA
FROM GIACESE,ESC
WHERE ESERCIZIO=CODICE
AND DPF2='N'
GROUP BY MAGAZZINO,ARTICOLO

lunedì 22 marzo 2010

Desktop Remoto in Windows Vista e 7

La funzionalità di Desktop Remoto server non è presente nelle versioni HOME Premium di Windows Vista e Windows 7.

Nelle versioni Vista e 7 di Windows non funziona la funzione l'installazione del servizio di Vnc Server. L'applicazione delle essere installata ed eseguita in User Mode e copiata nell'esecuzione automatica.

sabato 9 gennaio 2010

Query Riepilogo Cespiti

-- Riepilogo cespiti con base ammortizzabile, ammortizzato nell'anno, residuo

select ````||CESPITI.CATEGORIA CAT,
````||CESPITI.CODICE CODICE,DESCRIZION,ALIENAT_SN ALIEN,
INTAMM_SN INT_AMM,
CASE
WHEN DATA_ALI IS NULL THEN ``
ELSE
SUBSTR(DATA_ALI,1,4)||`/`||SUBSTR(DATA_ALI,5,2)||`/`||SUBSTR(DATA_ALI,7,2)
END DATA_ALI,
SUBSTR(CESPITI.DATAFATFOR,1,4)||`/`||SUBSTR(CESPITI.DATAFATFOR,5,2)||`/`||SUBSTR(CESPITI.DATAFATFOR,7,2) DATA_FAT,
cespiti.NUMNSFATT NUM_FATT,
EVALOREINI VALORE_INI,
CESPITI.ETOTALEAMM TOT_AMM,
CESPITI.ERESIDUOAM RESIDUO,
MOVCE.EIMPORTO AMM_+[Esercizio],
CESPITI.ERESIDUOAM-MOVCE.EIMPORTO DA_AMM
from CESPITI LEFT OUTER JOIN MOVCE ON CESPITI.CATEGORIA=MOVCE.CATEGORIA
AND CESPITI.CODICE=MOVCE.CODCESPITE
AND ESEREG=`+[Esercizio]`
AND TIPOMOV=`M`
LEFT OUTER JOIN (
select CATEGORIA,CODCESPITE,DATAREG DATA_ALI from MOVCE WHERE TIPOMOV=`L`
) ALIENATI ON CESPITI.CATEGORIA=ALIENATI.CATEGORIA
AND CESPITI.CODICE=ALIENATI.CODCESPITE
ORDER BY CESPITI.CATEGORIA,CESPITI.CODICE

Query chiusura ordine

-- Query per chiudere le testate degli ordini che hanno tutte le righe evase

UPDATE TESDOCUM
SET EVASO_SN='S'
WHERE NUMERO IN (
select TESDOCUM.NUMERO from TESDOCUM
WHERE ESERPROTOC >='2008'
AND TIPOPROTOC='OC'
AND EVASO_SN='N'
AND NOT EXISTS ( SELECT 1 FROM MOVIMAG M
WHERE TESDOCUM.NUMERO=M.NUMERO
AND EVASION_SN='N'
)
)

Query chiusura righe ordine

-- Chiusura di righe ordine aperte con articolo '.' e ordine aperto solo per quella riga
UPDATE MOVIMAG
SET EVASION_SN='S'
WHERE NUMERO IN
(select TESDOCUM.NUMERO from MOVIMAG,TESDOCUM
WHERE ESERCIZIO >='2008'
AND ARTICOLO='.'
AND TIPOPROT='OC'
AND EVASION_SN='N'
AND EVASO_SN='N'
AND TESDOCUM.NUMERO=MOVIMAG.NUMERO
AND NOT EXISTS ( SELECT 1 FROM MOVIMAG M
WHERE M.NUMERO=MOVIMAG.NUMERO
AND EVASION_SN='N'
AND ARTICOLO<>'.' )
)
AND ARTICOLO='.'