Allegati Excel

Generazione di allegati in formato Microsoft Excel

Jolly consente la generazione di documenti in formato Microsoft Excel precompilati in automatico con dati prelevati dal database. I documenti così predisposti potranno poi essere modificati manualmente con tutte le eventuali modifiche necessarie.

Perché il modulo di precompilazione dei documenti possa funzionare con sufficiente affidabilità, si consiglia di installarlo su computers basati sul sistema operativo Windows 2000 o successivi.

NB: le istruzioni presenti su questa pagina sono 'per addetti ai lavori', ovvero presuppongono una buona conoscenza sia del programma Jolly (a livello SQL) che di Excel e di sue funzioni non elementari.

Ecco una descrizione (per addetti ai lavori) di quanto è necessario predisporre per realizzare 

bulletFormato del file
bulletQuery principale
bulletInserimento di campi database
bulletQueries aggiuntive
bulletPosizione del cursore all'apertura del file xls
bulletParametri richiesti a runtime
bulletMacro avviate automaticamente (autoexec)

FORMATO DEL FILE XLS
Creare un file Excel da usare come modello. Il file deve avere un foglio con nome JOLLY.
Jolly assegnerà i valori specificati alle celle del foglio JOLLY che avranno i seguenti nomi (se esistenti):

nome cella valore sostituito
WW_ALL_PROTOCOLLO numero di protocollo dell'allegato
WW_ALL_CONTO codice conto
WW_ALL_DT data documento (formato: DD/MM/YYYY)
WW_ALL_DESCRIZIONE descrizione allegato

Se il foglio JOLLY contiene una cella con nome QUERY Jolly leggerà da questa cella un comando SQL da eseguire. Il comando SQL deve contenere la stringa $PK$ che JOLLY, durante la generazione del documento, provvederà a sostituire con la la primary key dell'oggetto con i cui dati si desidera compilare il documento. Ad esempio:

SELECT * FROM commesse WHERE str_codice = '$PK$'

Se la query contiene stringhe del tipo §nome§, JOLLY le sostituisce con il contenuto della cella che ha il nome specificato (e che deve trovarsi sullo stesso foglio della query). Se tale cella non esiste, viene emesso un errore. Ad esempio:

SELECT * FROM commesse WHERE str_codice = '$PK$' AND i_anno = §ANNO§

Qualora la cella QUERY non sia sufficiente per contenere tutto il comando è possibile utilizzare altre celle QUERY_ADD_01, QUERY_ADD_02, QUERY_ADD_03 ... che saranno lette e interpretate come continuazione del comando SQL.

Per caricare il valore di un campo referenziato dalla query SQL è possibile creare nel foglio JOLLY una cella che abbia per nome il nome del campo. Qualora la query restituisca più righe di dati, le righe successive saranno inserite nelle celle sottostanti.

Ad esempio, qualora il comando SQL sia quello dell'esempio, qualora la tabella commesse contenesse (tra gli altri) i campi: str_codice, str_cliente, dt_apertura, e qualora i nomi delle celle fossero i seguenti: A1=QUERY, A2=STR_CODICE, B2=str_cliente, C2=dt_apertura, il risultato potrebbe essere come segue (immaginando che la tabellina qui sotto sia la rappresentazione di un foglio Excel).

  A B C D
1 SELECT * FROM commesse WHERE str_codice = '$PK$'      
2 04-CAL-01 Callioni Federico 01/01/2004  
3 04-FED-02 Federico Callioni 17/01/2004  
4 04-XZY-03 XZY srl 12/02/2004  
5 04-ABC-04 ABC corporation 14/04/2004  
6        

Vi sono inoltre alcune celle dotate di speciale significato la cui presenza è facoltativa ma che, se presenti, si devono necessariamente trovare sul foglio JOLLY.

ACTIVE_SHEET nome del foglio che si desidera risulti attivo all' apertura del foglio Excel
ACTIVE_AREA nome dell'area dati che si desidera sia attiva all' apertura del foglio Excel (deve trovarsi su ACTIVE_SHEET)

Per consentire eventuali ulteriori trattamenti dei dati inseriti, JOLLY esegue automaticamente le seguenti macro (la cui presenza è facoltativa):
bullet

JOLLY_AUTOEXEC_BEFORE() prima di iniziare il caricamento dei dati;

bullet

JOLLY_AUTOEXEC_AFTER() dopo aver caricato i dati sul foglio Excel.

NB: per agevolare il debugging delle istruzioni SQL, tenendo schiacciato il tasto CTRL durante la compilazione del foglio JOLLY mostrerà in una casella di dialogo le istruzioni SQL prima che queste siano eseguite.

Per caricare sul foglio i dati di più queries, è possibile applicare la sintassi e le regole sopradescritte ai fogli JOLLY_02, JOLLY_03, JOLLY_04 eccetera. Il nome delle celle su cui devono essere caricate le queries dei fogli successivi al primo deve essere QUERY_nn, dove nn è il numero del foglio (esempio: foglio 02, cella QUERY_02). Eventuali celle di continuazione della query per i fogli ulteriori dovranno essere caricate su celle con nome QUERY_nn_ADD_xx, dove nn = numero del foglio, xx=numero della query aggiuntiva. Ad esempio, per il foglio JOLLY_02, i nomi delle celle dovranno essere: QUERY_02_ADD_01, QUERY_02_ADD_02, QUERY_02_ADD_03, eccetera.
I fogli aggiuntivi devono essere consecutivi: se ad esempio non è presente il foglio JOLLY_02, il programma non considera l'eventuale presenza dei fogli JOLLY_03 e successivi. E' obbligatorio che la prima query contenga almeno un record, le successive possono essere anche completamente prive di records.

PARAMETRI RICHIESTI A RUNTIME
E' possibile istruire JOLLY per far richiedere dei parametri aggiuntivi a runtime, durante la compilazione del foglio xls. Per ciascuno dei parametri aggiuntivi JOLLY aprirà una finestra di dialogo per consentire all'utente di specificare il valore da utilizzare. Jolly sostituisce con il valore del parametro in tutte le queries i nomi dei parametri racchiusi tra $ (esempio: $CODICE$ ).

Per attivare la funzione è necessario inserire nel file un foglio di nome PARMS al cui interno si devono creare delle celle con i seguenti nomi e scopi (la posizione [A1,B1, eccetera] indicata non è vincolante, ma in genere risulta comoda):
nome della cella cella contenuto obbligatoria?
PARM_NAME A1 nome del parametro; se il nome specificato in questa cella è (ad esempio) PIPPO, Jolly sostituirà in tutte le queries $PIPPO$ con il valore del parametro  SI
PARM_CAPTION B1 titolo della finestra di dialogo SI
PARM_QUESTION C1 testo della domanda SI
PARM_DEFAULT D1 valore default utilizzato per la risposta NO
PARM_ANSWER_RESTRICTED E1 se contiene il valore SI la risposta fornita alla domanda dovrà necessariamente essere una delle risposte specificate da PARM_ANSWERS  NO
(se assente si considera NON ristretto)
PARM_ANSWERS F1, G1, ... elenco delle risposte valide consentite; le risposte consentite dovranno essere specificate, una per cella, nelle celle che si trovano alla destra di PARM_ANSWERS (la prima risposta deve essere specificata nella cella PARM_ANSWERS) NO

Le celle il cui contenuto inizia con il carattere § vengono trattate come istruzioni SQL, e il loro contenuto viene rimpiazzato con il valore del primo campo del primo record restituito dall'espressione SQL. Per PARM_ANSWERS, vengono considerati tutti i records restituiti dall'espressione.

Se il nome del parametro è PARM_CONTO viene impostato il conto cui l'allegato si riferisce.

I valori contenuti nelle celle specificate servono per la definizione del primo parametro; i valori per eventuali ulteriori parametri devono essere inseriti, uno per riga, nelle celle immediatamente sottostanti (ad esempio: A2, B2, C2, ....).

Pagina base del manuale di JOLLY

aggiornato il 23/01/2010

home

scrivimi, se ti va