Elaborazioni SQL

<< Fare clic per visualizzare il sommario >>

Elaborazioni SQL

Note generali sui database

Un database può essere visto come un insieme di tabelle, ogni tabella rappresenta generalmente un'entità che viene utilizzata nel database e interagisce con le altre: ad esempio i Clienti sono un'entità e saranno memorizzati in una tabella.

Ogni entità possiede diversi attributi come ad esempio Nome, Cognome, Data di Nascita, Età ecc... Ovviamente queste informazioni sono di tipi e dimensioni diverse che variano in funzione del dato che deve essere memorizzato. Il campi presenti nel database di Mon Ami 3000 possono essere di tipo Stringa, Numero, Logical, Data e Memo; per quanto riguarda i campi Stringa, Memo e Data il valore deve essere indicato tra apici: 'STRINGA'

Descrizione delle funzionalità

Tramite questa finestra è possibile eseguire delle elaborazioni sui dati utilizzando il linguaggio SQL. Questo linguaggio permette di eseguire qualsiasi operazione sugli archivi, dalla ricerca alla cancellazione dei dati fino alla creazione e alla distruzione delle tabelle che compongono il database.

Informazione

Ogni istruzione scritta tramite il linguaggio SQL è detta QUERY e, in funzione delle operazioni eseguite, assume attributi differenti; ad esempio le query di SELEZIONE permettono di estrapolare dei dati dall'archivio in base ad una serie di filtraggi e condizioni e il risultato sarà esportato in un file XML che può essere facilmente visualizzato tramite Excel.

Mon Ami 3000 permette di creare un elenco di query da richiamare quando necessario e consente all'utente di creare delle query parametrizzate che possono essere riutilizzate per effettuare interrogazioni senza essere costretti a riscrivere l'intera query.

Nome

In questo campo è visibile un elenco di tutte le query presenti all'interno degli archivi; per inserire una nuova query selezionare il valore Nuova...

Nella parte destra dello stesso gruppo di campi sono presenti tre piccoli pulsanti che permettono rispettivamente di Caricare, Eliminare e Salvare la query SQL specificata. Il pulsante di caricamento è abilitato solamente nel caso in cui si stia scrivendo una nuova query e permette di caricare il contenuto di un file di testo con estensione ".sql"; il nome della nuova query viene richiesto al momento del salvataggio.

Query SQL

In questo campo è possibile inserire la query SQL che si desidera eseguire.

Informazione

Mon Ami 3000 consente di creare delle query standard dove i valori da utilizzare sono variabili e potranno essere specificati di volta in volta tramite una finestra creata dinamicamente senza dover riscrivere l'intera query con il rischio di compiere degli errori.

Importante. Per utilizzare questa funzione è fondamentale conoscere la struttura del database del software gestionale poichè, ogni valore specificato in una query parametrizzata, contiene riferimenti alle tabelle e ai campi contenuti nella tabella stessa.

 

Query SQL semplici

In una query SQL semplice tutte le informazioni per la ricerca dei dati sono inserite direttamente nell stringa.

Esempi:

Tutte le informazioni di tutti i clienti.

select *
from Controparti
where Controp='Cliente'

Solo la descrizione (DescrContr) di tutti i clienti

select DescrContr
from Controparti
where Controp='Cliente'

Numero (NumDoc) e data (DataDoc) dei documenti emessi nel mese di Gennaio 2007

select NumDoc, DataDoc
from Documenti
where DataDoc >= '01/01/2007' and DataDoc <= '31/01/2007'

 

Query parametrizzate

Poniamo il caso che periodicamente si vuole esportare in file XML differenti vari documenti emessi in un determinato periodo, ad esempio si vogliono esportare le fatture immediate e le fatture differite emesse in un determinato periodo. In tal caso si devono eseguire più query semplici che devono essere modificate ogni volta oppure una sola query parametrizzata...

Esempi:

select *
from Documenti
where CodDoc = '00001' and DataDoc >= '01/01/2007' and DataDoc <= '31/01/2007'

select *
from Documenti
where CodDoc = '00001' and DataDoc >= '01/01/2007' and DataDoc <= '31/01/2007'

 

Oppure...

select *
from Documenti
where CodDoc = '#Tipo documento:F:TipiDocumento|CodDoc:DescrDoc#' and DataDoc >= '#Dal:D#' and DataDoc <= '#Al:D#'

 

Struttura dei campi parametrizzabili

Ogni parametro è racchiuso tra i caratteri "#" ed è composto da varie opzioni separata dal carattere ":".

La sintassi generale con cui deve essere espresso il parametro è la seguente:

#<NOMEPARAMETRO>:<TIPO>:[OPZIONE1]:[OPZIONE2]:[...]#

I valori di [OPZIONE1], [OPZIONE2], [...] variano in funzione del <TIPO> di parametro e sono rappresentate tra parentesi quadre per indicare che sono parametri FACOLTATIVI.

Tipologie di parametri

Parametro di tipo Carattere e/o Stringa

Sintassi: #<NOMEPARAMETRO>:C:[NUM.CARATTERI]#

C sta ad indicare che il parametro è una STRINGA o un CARATTERE, [NUM.CARATTERI] rappresenta la lunghezza massima della stringa che di default è 50.

Parametro di tipo Memo

Sintassi: #<NOMEPARAMETRO>:M#

I campi di tipo Memo sono stringhe di ampiezza illimitata; nelle query solitamente non si utilizzano testi per la ricerca dei valori all'interno degli archivi ma, in determinati casi, vengono utilizzati questo tipo di campi e quindi è necessario indicare questa tipologia di parametro per avere una corrispondenza tra il campo dell'archivio e quello della query.

Parametro di tipo Data

Sintassi: #<NOMEPARAMETRO>:D#

Il carattere D indica che il parametro è un valore di tipo Data; non occorre specificare altre opzioni. Quando Mon Ami 3000 individua un parametro di questo tipo crea nella finestra di inserimento dati un campo dove poter specificare la data, un text con il nome del giorno e un pulsante che permette di riportare automaticamente la data di lavoro impostata.

Parametro di tipo Logical

Sintassi: #<NOMEPARAMETRO>:L#

I valori di tipo Logical sono campi che possono assumere solamente 2 valori: Vero o Falso. Quando Mon Ami 3000 incontra questo tipo di campo nella finestra di inserimento dati viene posizionato un controllo di tipo Check.

Parametro di tipo Numero

Sintassi: #<NOMEPARAMETRO>:N:[NUM.CIFRE]:[NUM.DECIMALI]#

N sta ad indicare che il parametro è un NUMERO. L'opzione [NUM.CIFRE] indica il numero massimo di cifre comprensivo dell'eventuale separatore decimale; [NUM.DECIMALI] rappresenta il numero di decimali ed è FACOLTATIVO.

Parametro di tipo Campo

Sintassi: #<NOMEPARAMETRO>:F:[TABELLA|CAMPO]:[DESCRIZ.VALORE]:[TIPOLOGIA]>#

Questo tipo di parametro è molto particolare in quanto permette di abilitare l'uso del tasto F2 per la ricerca dei valori; questo tipo di parametro viene utilizzato solamente per la ricerca delle cosiddette Chiavi esterne.
Un esempio di questo tipo potrebbe essere relativo ai Clienti e ai Documenti emessi; tra le varie informazioni di un documento è indicato anche il codice del cliente a cui è intestato, questa è la Chiave esterna.
L'opzione [TIPOLOGIA] è fondamentale quando la chiave esterna del parametro che stiamo definendo è relativa ad una tabella al cui interno sono contenute entità di tipo differente come avviene, ad esempio, per la tabella Controparti al cui interno sono contenuti clienti e fornitori.
Nota: In questo caso non è necessario specificare la dimensione del parametro, tutte le caratteristiche vengono recuperate automaticamente da Mon Ami 3000 utilizzando il valore [TABELLA|CAMPO] specificato.

Esempio: Documenti emessi verso il cliente numero 00001

Query semplice

select CodDoc, NumDoc, DataDoc
from Documenti
where Controp='Cliente' and CodContr='00001'

Query parametrizzata

select CodDoc, NumDoc, DataDoc
from Documenti
where Controp = 'Cliente' and CodContr = '#Cliente:F:Controparti|CodContr:DescrContr:Cliente#'

In questa query parametrizzata viene abilitata la ricerca del codice di un cliente dalla tabella Controparti e, una volta selezionato, ne viene mostrata la descrizione. Notare che la query richiede la condizione Controp='Cliente' e che il valore dell'opzione Tipologia coincide con il valore di Controp che è il campo della tabella che distingue il fornitore 00001 dal cliente 00001.

Si può ottimizzare ulteriormente la query in modo tale da poter ottenere solamente un determinato tipo di documento; successivamente alla query sarà riportata la relativa finestra di inserimento dati.

select CodDoc, NumDoc, DataDoc
from Documenti
where Controp = 'Cliente' and CodContr = '#Cliente:F:Controparti|CodContr:DescrContr:Cliente#' and CodDoc = '#Tipo doc.:F:TipiDocumento|CodDoc:DescrDoc#'