Preview only show first 10 pages with watermark. For full document please download

"in Formula" 34

   EMBED


Share

Transcript

Release Manuale 4.90 Tecnico SVILUPPO REPORT Personalizzazione e creazione nuove stampe Documentazione ad uso esclusivo dell’installatore della procedura Programma per la personalizzazione dei report (presenti nella procedura gestionale, realizzati con il programma Crystal Report di Seagate Software): permette di intervenire sulle funzioni di stampa, collegando nuove stampe o modificando le maschere di filtro di quelle già esistenti. Lo scopo dell’utility e' di disegnare le videate per la richiesta dei parametri di selezione, utili al Crystal Reports per la composizione della formula di estrazione dei dati visualizzati nel report stesso. È necessario che l’eseguibile il programma sia posizionato nella stessa directory in cui è stata installata la procedura gestionale, e che sia presente il percorso PathRpt\ nel file di configurazione .ini (presente nella cartella Windows\WinNt). Rel. 4.90 – Aggiornato al 09/02/2010 2 – Manuale Tecnico Indice degli argomenti 1 REPWIZARD: STAMPE PERSONALIZZATE ...................................................................... 3 1.1 1.2 1.3 Richiamo Funzione......................................................................................................... 4 Repwizard: caratteristiche tecniche................................................................................ 5 Creazione nuovo report (Proprietà)................................................................................ 6 1.3.1 1.2.3 1.2.3 1.2.3 1.2.3 1.2.3 1.4 1.5 Modifica Reports .......................................................................................................... 17 Lay-Out report .............................................................................................................. 18 1.2.3 1.6 1.7 Esempio di creazione di un report con utilizzo di Crystal.............................................. 9 Impostazione dimensione form ................................................................................... 12 Regole di Validazione.................................................................................................. 13 Informazioni generali ................................................................................................... 14 Formula Di Filtro Per Report Con Sql/Odbc................................................................ 15 Fine Della Creazione Guidata ..................................................................................... 16 Lay-Out report per stampe standard ........................................................................... 20 Utilizzo della Multi Lista ................................................................................................ 21 Codice Basic associato ................................................................................................ 23 1.7.1 1.7.2 1.7.3 1.7.4 Gestione di alcune tipologie di campi.......................................................................... 26 1° Esempio .................................................................................................................. 27 2° Esempio .................................................................................................................. 28 3° Esempio .................................................................................................................. 29 1.8 Inserimento a menù dei nuovi report personalizzati..................................................... 32 1.9 Stampa Orizzontale...................................................................................................... 34 1.10 Possibili errori................................................................................................. 35 2 IMPORT – EXPORT REPORT............................................................................................ 39 2.1 2.2 Esportazione report ...................................................................................................... 39 Importazione report ...................................................................................................... 42 SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 3 1 REPWIZARD: STAMPE PERSONALIZZATE Il ‘Repwizard’ è un’utility fornita a supporto della Procedura, che permette sia di creare ed agganciare nuove stampe (report) personalizzate ad hoc per l'Utente sia di gestire e modificare i report standard del programma. Tali stampe sono fornite di maschere e di filtro iniziali e, per le stampe personalizzate, si ha la possibilità di inserirle come scelte all'interno del menù preferito. L’utility è in grado di funzionare sia in ambiente Access ( nelle versioni 97,2000 e XP) sia in SQL Server. Per definire il collegamento con le stampe personalizzate ed impostare le relative selezioni è necessario lanciare un apposito programma denominato 'RepWizard.exe'. Lo scopo di quest’eseguibile è quello di permettere di disegnare, in maniera visuale, delle videate per la richiesta dei parametri di selezione e d’impostare le regole di validazione dei parametri stessi con la formula di selezione, indispensabile al Crystal Reports, per l’elaborazione del report. Affinché l’utility possa lavorare correttamente, è necessario che l’eseguibile KngRepWizard.exe sia posizionato nella stessa directory in cui è stato installato il programma ed esistano le subdirectory RptKing (directory standard) e la directory per i reports personalizzati Rptxxxx (dove xxxx si riferisce al codice della società in utilizzo), e che sia presente il percorso PathRpt\ nel file di configurazione .ini (presente nella cartella Windows\WinNt). E’ possibile richiamare il programma tramite il pulsante “AVVIO” dall’opzione “ESEGUI” specificandone il percorso C:// o . 10 – Manuale Tecnico Una volta inseriti i campi potremo cliccare sul pulsante fine e continuare a creare il nostro report senza usare la creazione guidata altrimenti potremmo cambiare scheda ed aggiungere Gruppi, Totali e Grafici. Di fondamentale importanza per il corretto funzionamento della Procedura, è l’inserimento del logo dell’applicativo: dal menù Inserisci, selezionare Campo Formula; nella cartella Formula cliccare su Nuovo e digitare ‘AppName’: cliccando su Inserisci, portare il nuovo campo nella parte riservata all’intestazione del report. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 11 Una volta costruito il lay-out di stampa, è necessario salvarlo: chiudere la finestra precedente con il pulsante Chiudi e, dal menù File, scegliere Salva con nome… (deselezionare l’opzione Salva dati con report): La finestra seguente elenca le cartelle e i file presenti nella posizione selezionata. Per visualizzare il contenuto di una cartella, fare doppio clic su di essa. Occorre ricordarsi, come già anticipato nel paragrafo precedente, che necessariamente occorre salvare il report nella corretta e specifica directory (RptKing in caso di report standard o Rptxxxx in caso di report personalizzato): Con la conferma delle operazioni appena compiute (‘Salva’), si consente al programma RepWizard di caricare i report appena creati, secondo le fasi che abbiamo avuto modo di vedere in questo stesso paragrafo: Con il pulsante ‘Seleziona’ si accede alle directory in cui sono contenuti i report appena creati. Nei paragrafi successivi si forniranno le necessarie informazioni per creare le maschere di filtro e per gestire al meglio le potenzialità offerte dal programma. 12 – Manuale Tecnico 1.2.3 Impostazione dimensione form Premere il pulsante posto nella parte bassa della finestra Codice: la prima videata che si visualizza è la seguente: I campi presenti permettono di dimensionare (valori espressi in pixel) e centrare i campi che sono stati inseriti nella maschera ‘Lista nostri Articoli’. Premere Avanti per proseguire, Annulla per abbandonare la creazione guidata. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 13 1.2.3 Regole di Validazione Questa videata consente di inserire le regole, o condizioni, di validazione relative ai campi inseriti nella maschera; tali condizioni devono verificarsi per l’accettazione del dato inserito nel singolo campo. I campi coinvolti sono tutti elencati, e numerati, nella colonna Controlli (1). Per assegnare la regola di validazione è sufficiente scrivere come deve comportarsi il programma ogni qualvolta si inseriscano dei valori nei campi: · · · · in inserimento, prima di immettere la stringa di validazione, occorre selezionare uno dei campi presenti sulla videata; durante l’inserimento della regola di validazione è possibile selezionare, dall’elenco dei campi dichiarati, il nome del campo in base alla sua descrizione; il nome del campo selezionato sarà aggiunto nella stringa di validazione (2); la sintassi delle stringhe Regole di Validazione prevede che possano essere utilizzati i normali operatori matematici (/, *, -, +, =, >, <, ecc.), gli operatori logici (NOT, OR, AND, ecc.) e le parentesi nidificate ( ). Ad esempio: usrtxt(1) < = usrtxt(2) NOT usrtxt(1) = ‘’ il valore del primo campo è “minore o uguale” al valore del secondo campo. il valore del primo campo non può essere una stringa vuota. Nel nostro esempio si decide che il codice dell’articolo inserito nel primo campo, debba essere inferiore al codice dell’articolo inserito nel secondo campo: 14 – Manuale Tecnico Ì fare doppio clic sul primo campo (nella colonna Controlli il campo denominato usrtxt(1)): si ottiene in automatico il suo inserimento nella colonna Regola di validazione; Ì inserire il tipo di validazione che si vuole ottenere, ossia inserire il simbolo “ < ”; Ì fare doppio clic sul secondo campo (nella colonna Controlli il campo denominato usrtxt(2)): si ottiene in automatico l’inserimento nella colonna Regola di validazione, dopo il simbolo “minore di”; Ì inserire il messaggio (nella colonna Messaggio d’errore) che si deve visualizzare nel caso non fosse rispettata la regola imposta: "Valore Da deve essere minore o uguale a Valore A". Premere Avanti per proseguire, Annulla per abbandonare la creazione guidata, Indietro per tornare alla videata precedente. 1.2.3 Informazioni generali I due flag presenti in questa videata permettono, se abilitati, di ottenere la stampa completa del Nome della Società e/o della sua Descrizione, bisogna fare attenzione che se vengono selezionati questi flag nel report dovranno essere obbligatoriamente inserite le formule che permettono la visualizzazione del cod soc e della ds soc altrimenti quando si premerà il pulsante conferma per l’apertura dell’anteprima il report andrà in errore. Premere Avanti per proseguire, Annulla per abbandonare la creazione guidata, Indietro per tornare alla videata precedente. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 15 1.2.3 Formula Di Filtro Per Report Con Sql/Odbc La quarta videata riguarda l’immissione della Formula di Filtro, ossia l’immissione della formula di selezione (SelectionFormula) da trasmettere al Crystal report che andrà a sostituire quella inserita nel report. La creazione guidata rende possibile: Ì Ì Ì selezionare, dall’elenco dei campi dichiarati, il nome del campo in base alla sua descrizione. Il nome del campo selezionato sarà aggiunto nella stringa della formula di selezione; selezionare una delle tabelle presenti nel database e dall’elenco dei suoi campi uno di questi in base alla sua descrizione. Il nome del campo selezionato è aggiunto nella stringa della formula di selezione; aggiungere il nome del campo selezionato nella stringa della formula di selezione nel formato Crystal Report ({NomeTabella.NomeCampo}). La sintassi della formula di selezione è la stessa descritta per la Regola di Validazione. La videata di gestione è la seguente: Selezionare la tabella di riferimento. Creare la formula di selezione SelectionFormula seguendo la logica attuata nella seconda videata: occorre estrarre solo i codici compresi tra il valore inserito nel primo campo ed il valore inserito nel secondo. Traducendo in formula si deve specificare innanzitutto a quale Tabella ed in particolare a quali Campi della tabella si deve fare riferimento. 16 – Manuale Tecnico Fare doppio clik sul nome del campo (viene inserito automaticamente nella finestra Formula e subito dopo inserire (sempre con doppio clic) il tipo di Funzione/Operazione che deve essere effettuata sul primo campo; cliccare quindi sul primo campo usrtxt per completare la prima parte della formula i codici da estrarre devono essere maggiori o uguali al valore inserito nel primo campo. Prima di passare alla seconda parte della formula (che riguarda il secondo campo) inserire AND logico, prelevandolo da Funzioni/Operazioni, che indica alla Procedura che si tratta di una condizione che si deve verificare contemporaneamente alla prima condizione. Ripetere, per il secondo campo, le operazioni effettuate relativamente al primo campo, sostituendo a >= la nuova operazione <= ( i codici da estrarre devono essere minori o uguali al valore inserito nel secondo campo). Premere Fine per terminare, Annulla per abbandonare la creazione guidata, Indietro per tornare alla videata precedente. 1.2.3 Fine Della Creazione Guidata Ultimata la creazione guidata, la Procedura visualizza, nella seguente videata (Codice Basic), il risultato delle scelte effettuate. Per confermare le scelte premere il pulsante con la freccia verde nella maschera del Codice Per modificare eventualmente alcune decisioni, premere il pulsante A questo punto e' possibile vedere immediatamente il risultato della creazione, inserendo dei valori nei campi della maschera e cliccando su Conferma. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 17 1.4 Modifica Reports In seguito all’esplorazione del menù, si procede cliccando con il tasto destro sul singolo report al fine di poter scegliere, tra la modifica delle proprieta' associate, la modifica del lay-out o l'eventuale eliminazione del report stesso Selezionando Layout report verranno aperte la maschera di selezione filtri e la finestra per la gestione del Codice Basic associato, a questo punto sara' possibile agire sulla maschera aggiungendo modificando o rimuovendo campi oppure modificare direttamente il codice basic relativo al report. Dopo aver selezionato la Voce Elimina sara' visualizzata una richiesta di conferma dell'operazione di eliminazione del report. 18 – Manuale Tecnico 1.5 Lay-Out report Ritornando al menù che si apre cliccando con il tasto destro del mouse, sul singolo report inserito (Reports Personalizzati – Lista nostri Articoli): premendo in corrispondenza di Layout report: Come si può osservare, si visualizza una finestra vuota in cui si andranno ad inserire i campi filtro secondo le nostre esigenze e, nello stesso momento (videata sopra, in secondo piano), si visualizza anche la finestra per la gestione del Codice Basic associato che sarà compilato automaticamente grazie alle istruzioni derivanti dalla creazione guidata trattata nel prosieguo del capitolo. In pratica tutte le informazioni che il programma trae dalle scelte operate durante la creazione, vengono tradotte nel modo opportuno, in una serie di istruzioni in linguaggio Basic. Per gli installatori più esperti è possibile agire direttamente su tale schermata per creare i filtri voluti. Se si preme Conferma (1) senza inserire nessun campo/filtro, la Procedura provvede ad estrarre tutti gli articoli di magazzino presenti nella società. Se viceversa si vogliono porre dei limiti alla estrazione, occorre creare dei controlli utilizzando la Personalizzazione On-Fly; per cominciare, premere il pulsante Personalizza (2): SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 19 3 Dopo aver premuto il pulsante personalizza verrà visualizzata la finestra di personalizzazione ON FLY che ci permetterà l’inserimento di tutti gli elementi necessari. 1 2 3 4 5 Inserimento: 1) Label 2) TextBox 3) Camponote 4) Campo Numerico 5) Campo Data 6) Check Box 7) Combo Box 8) Pannello 9) Apre la finestra proprietà 10) Elimina l’elemento selezionato 6 7 8 9 11 Inseriamo, i due campi etichetta (‘Da’ e ‘A’) e i campi testo che dovranno essere collegati, compilando il campo Richiamo lista presente nelle proprietà (3), inserendo i numero della lista articoli di magazzino, quando il focus andrà su questa text le comparirà accanto un pulsante con tre punti (il classico pulsante che apre le liste), e premendo il pulsante o premendo F5 verrà visualizzata la lista collegata. Le liste che possiamo utilizzare sono di due tipi la lista classica da cui possiamo selezionare un solo elemento per volta o la multi lista che adesso illustrerò. 20 – Manuale Tecnico 1.2.3 Lay-Out report per stampe standard Cliccando con il tasto destro del mouse su di una stampa standard, scegliere Lay-Out report dal menù che si apre, così come è stato fatto per i report personalizzati: si lancia la funzione che consente di modificare la maschera associata al processo di stampa selezionato (1); la maschera stessa si visualizza a video con i tasti prefissati Conferma, Personalizza ed Esci. Nello stesso momento si visualizza anche la finestra per la gestione del Codice Basic associato (2), che contrariamente a quanto avveniva per i report personalizzati, contiene già le informazioni (da modificare direttamente o con la creazione guidata) sul comportamento dei campi inseriti. Prendiamo come esempio il report dell’Anagrafica Articoli: Con il tasto Personalizza è possibile accedere a tutte le funzionalità associate alla Personalizzazione On-Fly e procedere così alla modifica del lay-out secondo le proprie necessità. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 21 1.6 Utilizzo della Multi Lista La multi lista è una particolare tipo di lista dove è possibili selezionare più di un elemento per volta. Per utilizzarla dovremo inserire nella form di rep wizard un campo text a cui collegheremo la lista, ed un pannello in cui dopo aver selezionato gli elementi dalla lista verrà visualizzato il numero di elementi selezionati. Di seguito vediamo il codice da inserire in repwizard per il funzionamento della multi lista. Dim m_sconti As String Dim m_aconti() As String Option Explicit Public Sub Form_GetMultiScelta(iLista As Integer, ctlCurControl As Object, bValue As Boolean) If ilista=3000 Then bValue=True Else bvalue=False numero della lista con cui vogliamo utilizzare la multilista End If End Sub Public Sub Form_GetMultisceltaParameters(nLista As Integer, sKeyField As String, sValues() As String, bValue As Boolean) Dim sValue As String Dim i As Integer 22 – Manuale Tecnico If nlista=3000Then sKeyField="CodTipoPrest" End If Campo chiave della lista ReDim svalues(0) svalue = m_sconti If Len(svalue)>0 Then Do While InStr(svalue,",")>0 i=i+1 ReDim Preserve svalues(i) svalues(i)=Left(svalue,InStr(svalue,",")-1) sValue=Right(svalue,Len(svalue)-InStr(svalue,",")) Loop ReDim Preserve svalues(i+1) svalues(i+1)=svalue End If ReDim m_aconti(0) m_sconti="" usrpnl(1).Text="" bvalue=True End Sub Public Sub Form_GetValueFromMulti(nLista As Integer, ctlCurControl As Object, vRetValue As Variant, iCurRow As Integer, iNumRows As Integer, bValue As Boolean) If nlista=3000 Then ReDim Preserve m_aConti(UBound(m_aConti)+1) m_aConti(UBound(m_aConti))=vRetValue(1) End If usrpnl(1).Text="Le Voci selezionate sono:" & UBound(m_aConti) m_sConti=m_sConti & "," & vRetValue(1) End Sub Si possono anche utilizzare più liste nella stessa form con la multi lista basterà duplicare la parte di codice presente in Form_GetMultisceltaParameters ed in Form_GetValueFromMulti cambiando le variabili ed aggiungere in Form_GetMultiScelta i codici delle liste da utilizzare. Poi per utilizzare i dati estratti dalla multi lista basterà ciclare sul vettore m_axxxx, facendo attenzione, a mettere un controllo sul pannello (dove sono visualizzati il numero di dati selezionati) prima di utilizzare il vettore m_axxxx, dato che nel caso non venga selezionato alcun dato dalla lista, quando si andrà ad utilizzare il vettore il report andrà in errore non eseguendo la parte restante del codice. Utilizzando la multi lista non è possibile inserire direttamente il codice nella text box, ma è possibile solo la selezione. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 23 1.7 Codice Basic associato In questo paragrafo si espongono le caratteristiche del Codice Basic per un utilizzo specifico da parte degli Utenti più esperti. Il processo di stampa si completa con la possibilità di aggiungere un codice Basic per svolgere lavori non standard nelle varie fasi che caratterizzano il processo stesso. La logica di lavoro è quella ad eventi e quindi il KngRepwiz richiederà all’Utente di svolgere i propri lavori particolari in momenti ben specificati. Gli eventi gestiti sono: Evento Form_Load Descrizione Questo evento viene richiesto al momento dell’inizializzazione della maschera associata al processo di stampa. In questa fase è possibile svolgere tutte le proprie azioni di inizializzazione, come ad es. settare valori iniziali nei textbox o nei combobox oppure cancellare il contenuto di tabelle temporanee, per la successiva rielaborazione dei dati dopo il loro utilizzo. Form_AfterReport Questo evento viene richiamato nel momento in cui è terminata l’esecuzione di un report e viene richiesto allo script se c’è la necessità di far partire un altro processo di stampa. La sequenza di reports è data dal contatore ReportNumber e la possibilità di annullare il processo viene data tramite il flag Cancel. Questo evento viene richiamato al momento della pressione del tasto conferma da parte dell’utente. Qui andranno svolti tutti i lavori finali di controllo sulla maschera (ad es. è possibile controllare che siano stati inseriti valori corretti nei TextBoxs oppure che il valore immesso in una cella sia minore o uguale a quello di un’altra). Se i controlli specifici non vanno a buon fine è necessario riportare il parametro Cancel a true ed eventualmente gestire il messaggio di errore che si vuole visualizzare nel parametro ErrorMessage (altrimenti verrà usato un messaggio di errore standard). L’evento viene richiamato se i controlli standard e specifici (Evento Validazione) sono andati a buon fine; si possono gestire tutte le operazioni particolari di settaggio del report quali: specifica della formula di selezione, specifica finale del nome del report, assegnazione delle formule all’interno del report (ad es. passaggio del codice della società e descrizione della stessa, passaggio dei limiti di stampa selezionati). Se il setup non va a buon fine è necessario riportare il parametro Cancel a true ed eventualmente gestire il messaggio di errore che si vuole visualizzare nel parametro ErrorMessage (altrimenti verrà usato un messaggio di errore standard). Form_Validazione Form_SetupReport 24 – Manuale Tecnico L’oggetto Form può avere le seguenti proprietà e metodi: Proprietà/Metodi Form.CenterScreen Descrizione L’impostazione a True di questa proprietà permette il posizionamento della maschera di dialogo al centro dello schermo Form.CurrCodSoc Codice della società in uso Form.CurrData Data corrente utilizzata nell’applicativo (restituisce una stringa formattata secondo lo stile delle date in utilizzo sul computer) Form.CurrRagSoc Ragione sociale della società in utilizzo Form.CurrEsercizio Numero di esercizio in utilizzo nell’applicativo Form.dtEseIni Data di inizio esercizio (restituisce una variabile di tipo data) Form.dtEseFine Data di fine esercizio (restituisce una variabile di tipo data) Let Form.ErrorBox Assegnando questa proprietà, con una stringa viene visualizzato un messagebox con il tipo di errore specificato nella stringa Form.Height Restituisce o imposta la proprietà di altezza della form di dialogo Form.LenMastro Restituisce la lunghezza del mastro nel piano dei conti della società in uso Form.LenConto Restituisce la lunghezza del conto nel piano dei conti della società in uso Form.LenSconto Restituisce la lunghezza del sottoconto nel piano dei conti della società in uso Form.nEse Restituisce il numero di esercizio corrente Form.UserID Restituisce l’ID dell’utente che sta utilizzando l’applicativo. In fase di costruzione RepWiz indicherà sempre 1 in questo campo (utente Amministratore) Form.ReportName (FileName as Dato un nome di report fornisce il percorso completo ad esso string) associato. E’ necessario specificare il nome di un file RPT fisico presente nella directory RptKing o Rptxxxx. Questa funzione è fondamentale nel momento in cui si vuole associare un report, al processo di stampa, differente rispetto a quello specificato nelle proprietà iniziali Form_ReadData Questa funzione restituisce la data da stampare sul report, in base alle impostazioni generali scelte dall’utente Form.StatusMessage E’ possibile impostare un messaggio che verrà visualizzato nella barra di stato della Procedura Form.Width Restituisce o imposta la proprietà di larghezza della form di dialogo Viene esposto l’oggetto Rep che di fatto rappresenta il controllo Crystal Report. È resa disponibile la libreria Crystal Report così che tutti i metodi e le proprietà del controllo OCX Crystal Report possano essere sfruttati e siano accessibili. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 25 Vengono esposti tutti i controlli utilizzati nel definire il disegno della maschera. Avremo i seguenti controlli e proprietà: usrtxt (Index) Proprietà/Metodi Usrtxt(Index)_Text (Get/Let) Usrtxt(Index)_Enabled (Let) usrcbo (Index) Proprietà/Metodi Usrcbo(Index)_Text (Get) Usrcbo(Index)_Enabled (Let) Descrizione Permette di leggere e scrivere il contenuto di una casella TextBox nella form di dialogo Permette di abilitare/disabilitare il controllo textbox specificato Descrizione Permette di leggere il contenuto di una casella ComboBox nella form di dialogo Permette di abilitare/disabilitare il controllo combobox specificato Usrcbo(Index)_ListIndex Permette di leggere e scrivere la proprietà ListIndex (Get/Let) all’interno di una combobox Usrcbo(Index)_AddItem = Permette di aggiungere voci alla ComboBox "stringa da visualizzare nella cbo" Usrcbo(Index).Clear usrchk (Index) Proprietà/Metodi Usrchk(Index)_Value (Get/Let) Usrchk(Index)_Enabled (Let) Permette di cancellare tutte le voci presenti nella combo box Descrizione Permette di leggere e scrivere il valore (0,1,2) di una casella CheckBox nella form di dialogo Permette di abilitare/disabilitare il controllo CheckBox specificato È fornito quindi un importante supporto per le operazioni inerenti al database. In particolare è possibile accedere al database della società utilizzando l’oggetto Form nel seguente modo: Form.Database. Questo è a tutti gli effetti un oggetto Database. Viene esposta la libreria DAO con tutti i metodi e le type. In ogni caso è fortemente consigliato non utilizzare direttamente i metodi del DAO ma i metodi della classe TDBSManag (classe proprietaria) per garantire la piena compatibilità dello script basic in ambiente SQL Server e Access. La classe TDBManag è esposta tramite l’oggetto DBMng. Non viene fornita una lista di tutti i metodi e proprietà di questo oggetto ma si consiglia di utilizzare il browser oggetti che la form di stesura del codice mette a disposizione (1) per conoscere esattamente tutte le librerie a disposizione. 1 26 – Manuale Tecnico 1.7.1 Gestione di alcune tipologie di campi • Gestione pannelli: E’ possibile gestire i panelli nel codice dei reports, ed è ora possibile referenziarli come tutti i campi di testo. Ad esempio: per fare un panello invisibile, nel codice del report si può scrivere usrpnl(1).visible=False • Intervallo Da Codice A Codice nei filtri: L'evento Usrtxt_GotFocus è stato inserito per risolvere il seguente problema: spesso nelle maschere del filtro sono presenti i campi per l’inserimento di un intervallo Da Codice A Codice. Una volta valorizzati, detti campi devono essere riempiti con Stesso valore, quindi, utilizzando l'evento UsrTxt_GotFocus questa necessità si gestisce nel seguente modo: Public Sub usrtxt_GotFocus(Index As If Index=8 If usrtxt(8).Text ="" usrtxt(8).Text=usrtxt(7).Text usrpnl(7).Text=usrpnl(6).Text End End If End Sub • Integer) Then Then If Apertura Recorset del database Comune: per procedere con l’apertura del file, non è più necessario aprire il database comune. L’oggetto comune si referenzia con Form.DbsComune: If DBMng.RstOpen(Form.DbsComune,rst,”Select UserList”,dbOpenDynaset) Then * from SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 27 1.7.2 1° Esempio Il seguente è un esempio di Codice SAX BASIC che permette di creare un report per la stampa delle anagrafiche articoli: Public Sub Form_Load() usrcbo(1).ListIndex = 0 End Sub Public Sub Form_SetupReport(Cancel As Boolean, ErrorMessage As String) Dim sDa As String Dim sA As String Rep.Formulas(0) = "CodSoc=" & Chr(34) & Form.CurrCodSoc & " - " & Chr(34) Rep.Formulas(1) = "DsSoc=" & Chr(34) & Form.CurrRagSoc & Chr(34) Rep.Formulas(2) = "ore=" & Form.ReadData("D") sDa = UCase(Trim(usrtxt(1))) sA = UCase(Trim(usrtxt(2))) If sDa = "" Then sDa = "" If sA = "" Then sA = "ZZZZZZZZZZ" If usrcbo(1).ListIndex = 0 Then ' Stampa in ordine di Codice Rep.SelectionFormula = "{Articoli.CodArt} >= '" & sDa & "' AND {Articoli.CodArt} <= '" & sA & "Z'" rep.SortFields(0) = "+{Articoli.CodArt}" Else Rep.SelectionFormula = "{Articoli.Descrizione} >= '" & sDa & "' AND {Articoli.Descrizione} <= '" & sA & "Z'" rep.SortFields(0) = "+{Articoli.Descrizione}" End If End Sub Public Sub Form_Validazione(Cancel As Boolean, ErrorMessage As String) If usrtxt(1) > usrtxt(2) Then ' --- Controllo sui valori Da / A ' Cancel = True ErrorMessage = "Il valore Da deve essere minore o uguale al valore A" End If End Sub 28 – Manuale Tecnico 1.7.3 2° Esempio Il seguente è un esempio di Codice SAX BASIC applicato alla stampa dell’Anagrafica Fornitori, in cui si cambia il nome del report (nella maschera sono presenti delle combo): Public Sub Form_Load() usrcbo(1).ListIndex = 0 usrcbo(2).ListIndex = 0 End Sub Public Sub Form_SetupReport(Cancel As Boolean, ErrorMessage As String) Dim sDa As String Dim sA As String If usrcbo(2).ListIndex = 0 Then Rep.ReportFileName = Form.ReportName("fornito1.rpt") Else Rep.ReportFileName = Form.ReportName("fornito2.rpt") End If Rep.Formulas(0) = "CodSoc=" & Chr(34) & Form.CurrCodSoc & " - " & Chr(34) Rep.Formulas(1) = "DsSoc=" & Chr(34) & Form.CurrRagSoc & Chr(34) Rep.Formulas(2) = "ore=" & Form.ReadData("D") sDa = UCase(Trim(usrtxt(1))) sA = UCase(Trim(usrtxt(2))) If sDa = "" Then sDa = "" If sA = "" Then sA = "ZZZZZZZZZZ" Rep.SelectionFormula = "{Fornito.CodFor} >= '" & sDa & "' AND {Fornito.CodFor} <= '" & sA &"'" If usrcbo(1).ListIndex = 0 Then Rep.SortFields(0) = "+{Fornito.CodFor}" Else Rep.SortFields(0) = "+{Fornito.Denom}" End If End Sub Public Sub Form_Validazione(Cancel As Boolean, ErrorMessage As String) If usrtxt(1) > usrtxt(2) Then Cancel = True ErrorMessage = "Il valore Da deve essere minore o uquale al valore A" End If End Sub SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 29 1.7.4 3° Esempio Il seguente esempio, come il precedente, prevede il caso in cui si cambia il nome del report (Stampa Scadenzario): Public Sub Form_Load() usrcbo(1).ListIndex = 0 usrcbo(2).ListIndex = 0 End Sub Public Sub Form_SetupReport(Cancel As Boolean, ErrorMessage As String) Dim DaCod As String Dim ACod As String Dim dtRif As String Dim dtDaData As Date Dim dtAaData As Date Dim bDaData As Boolean Dim bAaData As Boolean Dim sDateLimite As String Dim strSele As String Dim iCnt As Integer bDaData = (Trim(usrtxt(5)) <> "") bAaData = (Trim(usrtxt(6)) <> "") If bDaData Then dtDaData = CDate(usrtxt(5)) If bAaData Then dtAaData = CDate(usrtxt(6)) 30 – Manuale Tecnico If usrcbo(1).ListIndex = 0 Then Rep.ReportFileName = Form.ReportName("Scade1.rpt") Else Rep.ReportFileName = Form.ReportName("scade2.rpt") End If Rep.Formulas(0) = "CodSoc=" & Chr(34) & Form.CurrCodSoc & " - " & Chr(34) Rep.Formulas(1) = "DsSoc=" & Chr(34) & Form.CurrRagSoc & Chr(34) Rep.Formulas(2) = "stampato=" & Form.ReadData("D") If Trim(usrtxt(2)) = "" Then DaCod = "AAAAAAAAAA" Else DaCod = usrtxt(2) If Trim(usrtxt(3)) = "" Then ACod = "ZZZZZZZZZZ" Else ACod = usrtxt(3) Select Case usrcbo(2).ListIndex Case 0 strSele = "({MovContScad.FlagStato}='A')" Case 1 strSele = "({MovContScad.FlagStato}='A' OR {MovContScad.FlagStato}='C')" If Trim(usrtxt(5)) = "" Then bDaData = True dtDaData = CDate(Form.CurrData) End If Case 2 strSele = "({MovContScad.FlagStato}= 'A' OR {MovContScad.FlagStato}= 'C')" End Select If bDaData Or dtAaData Then sDateLimite = "" If bDaData Then tmAa = Trim(Str(Year(dtDaData))) tmMm = Trim(Str(Month(dtDaData))) tmGg = Trim(Str(Day(dtDaData))) tmData = "date(" & tmAa & "," & tmMm & "," & tmGg & ")" sDateLimite = "({MovContScad.DataScad} >= " & tmData & ")" End If If bAaData Then tmAa = Trim(Str(Year(dtAaData))) tmMm = Trim(Str(Month(dtAaData))) tmGg = Trim(Str(Day(dtAaData))) tmData = "date(" & tmAa & "," & tmMm & "," & tmGg & ")" If sDateLimite <> "" Then sDateLimite = sDateLimite & " AND " sDateLimite = sDateLimite & "({MovContScad.DataScad} <= " & tmData & ")" End If strSele = "(" & strSele & " AND (" & sDateLimite & "))" End If If Trim(usrtxt(1)) <> "" Then strSele = strSele & " and {MovContScad.TipoPag}='" & usrtxt(1) & "' " If Trim(usrtxt(4)) <> "" Then strSele = strSele & " and {MovContScad.CodBan}='" & usrtxt(4) & "' " strSele = strSele & "and {MovContScad.Codice}>='" & DaCod & "' " + "and {MovContScad.Codice}<='" & ACod & "' " strSele = strSele & "and {MovContTest.NumEser}>0" strSele = strSele & " AND {MovContScad.FlagStato}<>'X' " rep.SelectionFormula = strSele rep.SortFields(0) = "+{MovContScad.DataScad}" SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 31 rep.SortFields(1) = "+{MovContScad.Codice}" rep.SortFields(2) = "+{MovContScad.Partita}" End Sub Public Sub Form_Validazione(Cancel As Boolean, ErrorMessage As String) If usrtxt(2) > usrtxt(3) Then ErrorMessage = "Codice Da deve essere minore o uguale a Codice A" Cancel = True End If End Sub 32 – Manuale Tecnico 1.8 Inserimento a menù dei nuovi report personalizzati L’inserimento a menù di nuove Stampe Personalizzate è un procedimento molto semplice. Al lancio della Procedura, cliccando con il tasto destro del mouse sulla barra dei pulsanti di scelta rapida, si visualizza il seguente menù: Selezionando Personalizza, si accede alla lista che consente l’inserimento di nuove funzioni/report personalizzati: Nella cartella Comandi - Categorie Funzioni, scorrere con la barra di scorrimento veloce l’elenco Comandi finché non si trova la Stampa ricercata. A questo punto, dopo averla selezionata, trascinarla con il tasto sinistro del mouse all’interno del menù desiderato o all’interno della toolbar sotto forma di pulsante di scelta rapida. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 33 Per assegnare l’eventuale icona è sufficiente selezionare Gestione Toolbar: La Procedura ha inserito nell’elenco la descrizione della nuova stampa. Ora selezionare un’icona e digitare, nella colonna Suggerimento, il messaggio che si vuole visualizzare al passaggio del mouse sul pulsante inserito nella Toolbar. 34 – Manuale Tecnico 1.9 Stampa Orizzontale Per far sì che la procedura stampi in posizione orizzontale il report creato con crystal report bisogna dopo averlo ultimato porlo in posizione verticale e selezionare il flag Proprietà predefinite. Dopo aver settato le impostazioni corrette nel menù imposta stampante, si dovrà entrate nel menu proprietà documento, e inserire “orizzontale” nel campo Parola chiave, così quando stamperemo il report con la procedura sarà automaticamente posizionato in orizzontale. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 35 1.10 Possibili errori E’ possibile che vengano riscontrati problemi dovuti a errori di distrazione che portino ad una notevole perdita di tempo cercherò di illustrarli nel modo più chiaro possibile: E’ possibile che un report funzioni correttamente su access e non funzioni su sql oppure che funzioni correttamente su un certo database ed invece non funzioni su un altro, se viene visualizzata una finestra che comunica un errore di dll molto probabilmente avremmo settato in modo non corretto le impostazioni su crystal report per la connessione al database, i passaggi da compiere per correggere gli eventuali errori sono i seguenti: Entrare nel menu database selezionare la voce Imposta Posizione ed assicurarsi che il nome della tabella non sia preceduto dal nome del database ed eventualmente cancellarlo lasciando solo il nome della tabella. 36 – Manuale Tecnico lo stesso problema può essere dato dal driver del database per risolverlo basta seguire questo procedimento. Andare su Database Æ Converti Driver Database Selezionare Pdsocodbs.ddl(ODBC) e cliccare su OK Selezionare l’origine dati sia corretta Æ KingW96 Report SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 37 nell’ultima finestra assicurarsi che sia l’ID che la password siano corretti e premere OK Altri possibili errori potrebbero essere dovuti alla query di crystal report che per errore può essere stata modificata in modo non corretto, per ripristinare la query bisogna andare su database mostra query sql e cliccare sul pulsante reimposta, facendo attenzione alle eventuali condizioni che si sono inserite nel where che cliccando reimposta verranno cancellate. 38 – Manuale Tecnico Oppure un’altro problema che causa errori può essere l’utilizzo di date, il formato data viene utilizzato in modo diverso da sql acces e crystal report, per quanto riguarda sql access per avere il formato corretto basta utilizzare il metodo DBMNG.GetSqlDate( Variabile Data) che automaticamente formatterà la data nel formato corretto, mentre per l’utilizzo in crystal report si dovrà procedere in modo diverso, come vediamo nella riga sottostante la data deve essere passata nel formato anno, mese, giorno preceduta dalla parola Date. Date (" & Year( usrtxt(3)) & "," & Month(usrtxt(3)) & "," & Day(usrtxt(3)) & ")" Così crystal report riconoscerà la data e la utilizzerà nella query di estrazione. Un’altro problema riscontrabile è la possibilità di avere nel report dati diversi da quelli contenuti nel database, questo problema è dovuto al settaggio errato delle opzioni del report, per risolvere questo problema apriamo il menù opzioni report e deselezioniamo il flag Salva dati con report. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 39 2 IMPORT – EXPORT REPORT La procedura consente di effettuare l’importazione e l’esportazione dei report di stampa: è possibile importare, in un determinato archivio, dei report (standard o personalizzati) precedentemente esportati da un altri archivio. Il vantaggio di queste funzionalità è quello che saranno automaticamente aggiornate e gestite le tabelle dei database interessate dalla gestione dei report personalizzati. 2.1 Esportazione report La funzione consente l’esportazione dei report personalizzati sviluppati in una società. Si accede alla funzione dal Menù Utilità Æ Esportazione Report: Il primo campo richiede la selezione del percorso della cartella nella quale saranno esportati i report: l’utente può richiamare la cartella per l’esportazione, precedentemente creata, scrivendo direttamente nel campo di selezione il nome ed il percorso della cartella, o premendo sul pulsante con i tre puntini per cercarne il percorso. Se il percorso digitato non fosse corretto, o non fosse presente la cartella indicata, viene richiesto all’Utente se creare o meno la cartella. La cartella selezionata dovrà, necessariamente, essere vuota (in caso contrario un messaggio avviserà l’Utente sull’impossibilità di procedere). 40 – Manuale Tecnico Dopo aver selezionato o creato la cartella per l’esportazione, premendo il tasto F5 sarà visualizzata una lista multiscelta contenente l’elenco di tutti i Report Personalizzati della società corrente: Per visualizzare la lista dei Report Standard, premere il tasto S e successivamente il tasto F5 : A questo punto si selezionano i report, che s’intende riportare in griglia: Alla Conferma si visualizzeranno i report scelti nella griglia. SVILUPPO REPORT: Personalizzazione e creazione nuove stampe - 41 La griglia riporta, per ogni report, le seguenti informazioni: • • • • • Codice: codice identificativo del report Descrizione: descrizione associata al report Nuovo: la colonna viene abilitata alla selezione soltanto quando si è in presenza di un report personalizzato (quindi, quando è spuntato il flag di riga della colonna Personalizzato) l’attivazione del flag 9 , nella colonna, attiva un controllo che verifica la presenza o meno di report con lo stesso numero, e se presenti, in fase di importazione non andrà a sovrascriverli, ma li rinominerà con altro nome, equivalente al numero dell’ultimo report personalizzato + 1. Personalizzato: si attiva quando il report è personalizzato, sia di tipo Standard (il codice comincia con la lettera ‘S’), sia creato dall’Utente (per esempio: “001” e ”002”) RPTCollegati: nome, o elenco di nomi, del file fisico .RPT. Dalla lista riportata in griglia l’Utente potrà scegliere i report che desidera esportare, procedendo con la selezione, cliccando con il tasto destro del mouse associato al tasto Ctrl se non sono consecutivi tra loro, ed associato al tasto Shift se consecutivi (selezionando il primo e l’ultimo report dell’intervallo): Premendo il pulsante Esporta i dati dei report selezionati saranno copiati nella cartella scelta. Oltre ai file RPT, nella stessa cartella di destinazione, verranno creati dei file di testo che conterranno le seguenti informazioni relative ai report: • • • Il codice presente nella tabella PrnCode; I record della tabella DefMskFil (che definiscono il design della maschera per il filtro del report) Il file ListaRep.txt che contiene l’elenco dei report esportati. 42 – Manuale Tecnico 2.2 Importazione report La funzione consente il ripristino di reports da una cartella nella quale, precedentemente, erano stati esportati con la funzione d’esportazione. Si accede alla funzione dal Menù Utilità Æ Importazione Report La funzione è sostanzialmente identica a quella dell’esportazione. La modalità di selezione del percorso è identica: in questo caso, si dovrà scegliere il percorso della cartella nella quale sono stati copiati i report precedentemente esportati. Indicato il percorso, il programma verificherà, che all’interno della cartella scelta esista il file ListaRep.txt (creato dalla precedente esportazione): se questo file non dovesse esistere, non sarà possibile proseguire con l’operazione (sarà visualizzato un messaggio bloccante). Rilevato il file nella cartella indicata, tutti i report elencati al suo interno sono visualizzati in griglia, già selezionati per essere importati e deselezionabili attraverso i flag 9 della colonna Importa: Premendo il pulsante , i report selezionati in griglia verranno importati all’interno della società corrente: in presenza di report con lo stesso nome, verrà visualizzato un messaggio di avviso che richiede la conferma prima di procedere alla sovrascrittura. I report che hanno selezionato il flag Nuovo saranno importati assegnando loro un codice nuovo.