Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Ho bisogno di scrivere un programmino che, dopo aver analizzato dei files contenenti dei particolari tracciati, estragga dei dati da un foglio di Excel e tramite questi generi dei files di testo con una particolare struttura determinata dal file del tracciato. Terminata la visione e lo studio del modulo standard del progetto possiamo passare ai due form che compongono l'interfaccia utente. Poiché i due form sono strettamente connessi, nello studio sarà necessario dare un primo sguardo al primo form, studiare il secondo e una volta fatto, terminare lo studio del primo form. Cominciamo con la semplicissima interfaccia utente del form principale.
Essa consiste in 5 Labele 5 TextBox e in basso appaiono due semplici CommandButtonche serviranno per accedere al secondo form e confermare i dati immessi. Abbiamo quindi nell'ordine:
Il codice è molto semplice: saranno gestiti soltanto tre eventiin questo form: il click sopra il pulsante "Crea definizione", il click sopra il pulsante "Genera output" e la chiusura del programma per effettuare la chiusura del database EXCEL aperto. Inizialmente vedremo soltanto il primo e l'ultimo evento, poiché ancora non sappiamo come sia costituito il file di definizione. Ecco quindi le poche righe di codice:
Nel momento in cui l'utente clicca sul pulsante CreaDefinizione viene controllato se i dati immessi nelle caselle DatiInputText, TracciatoText e NomeFoglioText sono validi mediante verifica dell'esistenza del file e apertura del foglio di Excel.
Alla riga 4 abbiamo un'istruzione di gestione degli errori; per cui ogni errore farà si che la Sub giunga al termine. Alla riga 8 abbiamo l'apertura del database Excel tramite driver ISAM "Excel 5.0", compatibile con tutte le versioni di Excel. Alla riga successiva viene effettuata l'apertura del foglio specificato nella casella di testo apposita. Nota che i nomi dei fogli di testo sono memorizzati in una maniera per la quale il nome del foglio è sempre seguito da un segno di dollaro ($); ecco perché l'apertura del Recordset ha come parametro il nome del foglio ed il segno di dollaro. Alla riga 10 viene caricato il form DefinitionForm, che si occuperà di generare i file di definizione, ma non viene mostrato subito. Prima viene caricato il file di tracciato all'interno della RichTextBoxFileTracciato tramite il metodo LoadFile. Subito dopo questo viene mostrato il form in modalità modale, ovvero a scelta obbligatoria (riga 12). Da questo punto in poi la gestione viene affidata completamente al form DefinitionForm. Il nostro form principale si occuperà soltanto di chiudere il form all'uscita da esso. In caso fosse generato qualche errore in questa Sub verrà mostrato un messaggio di errore (riga 16) e verranno chiusi e deallocati il Recordset ed il database Excel.
La chiusura del form si assicura soltanto che vengano chiusi e deallocati correttamente il Recordset FOGLIOXLS ed il database FILEXLS.
Prima di vedere il funzionamento della routine di creazione del file
di output è necessario vedere come si compone il file di definizione.
Nella parte superiore del form abbiamo una RichTextBoxdi nome FileTracciato con le proprietà impostate come segue:
Nella sezione sotto abbiamo due ListBoxdi
nome ListaSezioni e ListaCampi; abbiamo anche una serie
di CommandButtoni
cui nomi sono: PulsanteChiudi, PulsanteCreaDefinizione,
PulsanteCaricaDefinizione, PulsanteAggiungiSezione, PulsanteEliminaSezione.
A questi si aggiungono tre CheckBoxdi
nome RigaFissaCheck, LunghezzaFissaCheck e AllineaSinistraCheck. In sostanza, tramite questo form sarà possibile analizzare il tracciato e definire le posizioni in cui andranno inseriti i dati estratti dal file Excel. Una volta terminata la definizione sarà possibile salvarla in un file FDF. Inoltre sarà possibile caricare files FDF salvati in precedenza. L'analisi del tracciato si effettua separando in sezioni le parti che
devono subire un trattamento particolare, quale la sostituzione con un
campo del database. Le sezioni saranno gestite tramite le funzioni della parte sinistra, mentre la parte centrale è dedicata alla definizione delle singole sezioni. Accennato il funzionamento del form DefinitionForm, possiamo tuffarci nel complesso codice che ne regola il comportamento.
Abbiamo definito due variabili globali all'interno del form. La prima è una Collection di nome SEZIONI che conterrà tutte le sezioni convertite in stringa tramite la funzione Sezione2Riga. La seconda variabile è TROVAPOSIZIONE, di tipo booleano e servirà per inibire l'esecuzione di certi eventi nel momento in cui cambieremo alcuni stati.
Prima di addentrarci nel form vediamo la Sub MostraSezioni. La sua esecuzione comporta l'azzeramento della ListBoxListaSezioni (riga 8) ed il successivo riempimento tramite lettura della Collection SEZIONI.
Al caricamento del form vengono inseriti nella ListBox ListaCampi i nomi dei campi del foglio di Excel (riga 21) e la selezione del primo elemento (riga 23).
Il click sul pulsante PulsanteAggiungiSezione comporta la creazione di una nuova sezione, i cui valori sono determinati dallo stato di alcuni elementi dell'interfaccia. Per creare una sezione è necessario selezionare del testo (almeno un carattere - riga 31) e premere questo pulsante. Verranno memorizzate le coordinate iniziali e finali della selezione (righe 32 e 33), il campo associato del foglio (riga 34), ed altri parametri definiti dai controlli posti nella parte centrale dell'interfaccia (righe 35-38). Tale sezione verrà inserita subito dopo la sezione selezionata
al momento nella ListBox ListaSezioni (riga 40) o all'inizio
della Collection SEZIONI (riga 42). Fin qui abbiamo inserito la nuova sezione nella Collection; la riga 46
provvederà a mostrare i dati della Collection nella ListBox ListaSezioni
e poi riportare il focus sulla RichTextBox FileTracciato
(riga 47). |
Fibia
FBI
|
Torna all'introduzione delle Richieste dei lettori |