Creazione dinamica di fogli in base ad estrazione su SQL Server PDF Stampa E-mail
Scritto da Alessandro Dereani   
Lunedì 26 Marzo 2007 16:45

SQL2XLS.xls è una cartella excel che consente la generazione di fogli basati su delle interrogazioni eseguite verso dei databases ospitati da MSSQL Server.

Una volta aperta la cartella confermando l'abilitazione delle macro, è possibile inserire nella cella B1 il comando SQL da inviare verso MSSQL Server.
Il comando inserito può essere di qualsiasi tipo, gli unici vincoli sono il rispetto della sintassi del linguaggio T-SQL e la non restituzione di campi BLOB (i campi image, text, ntext).
Un comando può essere composto da più istruzioni separate dal carattere ; in modo che la sua esecuzione sia in grado di restituire più resultset.
Ogni resulset viene dirottato verso un proprio foglio facendo si che al termine dell'esecuzione del comando, la cartella excel sia costituita da:
- Il primo foglio che contiene il comando SQL elaborato;
- Un certo numero di altri fogli creati dinamicamente, oguno dei quali contenente un resulset tra l'insieme di quelli restituiti.
Tutti i fogli che contengono i dati delle estrazioni hanno la modalità di filtro automatico attiva e presentano la prima riga bloccata, favorendo in questo modo una successiva attività di ricerca/ordinamento/filtro sui dati presenti.
Se il comando è complesso, cioè se la sua lunghezza è considerevole, è consigliabile usare la barra della formula piuttosto che editarlo direttamente all'interno della cella.

L'invio del comando verso MSSQL Server è eseguito con un click sul bottone 'Esegui comando', una volta cliccato comparirà la maschera standard per l'immissione dei parametri necessari alla connessione. In questa maschera si deve procedere ad indicare il server, la modalità e le informazioni necessarie all'autenticazione, e tramite il bottone 'Opzioni' è possibile indicare il database corretto oggetto del comando da inviare.
Tutte le informazioni sulla connessione sono mantenute in memoria in modo che successivi comandi ereditino le stesse impostazioni, impostazioni che sono comunque modificabili liberamente ad ogni nuovo invio del comando (per dare la possibilità ad esempio di scegliere un altro database).
Le impostazioni di connessione sono perse al momento della chiusura della cartella excel, una sua successiva apertura per eseguire nuove estrazioni determina la necessità di reinserire le impostazioni di connessione in modo completo alla prima esecuzione di un comando.

Lo zip allegato all'articolo contiene uno script .sql che può essere eseguito tramite Query Analyzer su un'istanza di MSSQL Server. Il compito dello script è quello di creare nel tempdb un insieme di oggetti poi utilizzati dalla cartella xls per eseguire un test sul suo funzionamento.
Quindi dopo aver eseguito lo script .sql si può procedere ad aprire la cartella xls che contiene già un comando predefinito di esempio. L'esecuzione del comando genera 3 nuovi fogli che contengono:
- Tutti i giorni dell'anno;
- Tutti i giorni del mese di agosto;
- Tutti i giorni del mese di dicembre;
Il primo foglio viene generato inseguito all'esecuzione della prima istruzione select contenuta nel comando, il secondo foglio viene generato dopo l'esecuzione della stored procedure che specifica come parametro il mese di agosto, il terzo viene gerato dopo l'esecuzione della stessa stored procedure che specifica però come parametro il mese di dicembre.
Naturalmente l'esempio non ha nessuna utilità pratica, il suo scopo è solo quello di dimostrare come sia possibile inviare un comando SQL composto da più istruzioni e vedere come i resulset risultanti siano dirottatti verso altrettanti fogli xls.


Sistema operativo: Win32

Applicazioni: Excel 2000, Excel 2002/XP, Excel 2003

 

 
Allegati:
FileDescrizioneDimensione del File
Scarica questo file (sql2xls.zip)sql2xls.zip 22 Kb