0
Personalizzazione Stampe in Report Designer
Problem reported by Demetria Fundament - May 5, 2008 at 1:57 AM
Resolved
Dopo un paio di giorni di ricerca sono finalmente riuscito a venirne a capo, la documentazione non e' molta, anzi, quasi totalmente inesistente. Spero almeno possa essere utile a qualcuno e, nel caso, basta che facciate un reply con un "grazie". [:)] PRIMA DI TUTTO VA DETTO CHE NON SONO RESPONSABILE DEI DANNI CHE POTRESTE CAUSARE UTILIZZANDO IN MODO NON CORRETTO CIO' CHE SCRIVO. Vi consiglio, specie se non sapete bene cio' che state facendo, di effettuare i backup di stampe, DB, impostazioni, e chiavi nel caso in cui qualcosa possa andar male. --- E' possibile personalizzare le stampe in maniera dinamica durante la stampa si possono spostare i campi, colorare o aggiungere o togliere dati a seconda di cio' che state stampando, si possono aprire recordset ed altro utilizzando gli script dei report. Il mio problema era che non volevo i campi: - colli - corriere - spese - porto - aspetto nel "report footer", ma nel "page footer", perche' secondo me stanno meglio a fine pagina. La soluzione e' che basta inserire nel codice del "page footer" 5 campi che io ho nominato come: - colli1 - corriere1 - spese1 - porto1 - aspetto1 per differenziarli dai precedenti, che sono comunque rimasti e nel codice-script sempre del "page footer" ho inserito: Sub OnFormat rpt.Sections("PageFooter").controls("colli1").Caption = rpt.Sections("ReportFooter").controls("colli").Caption rpt.Sections("PageFooter").controls("costospedizione1").Caption = rpt.Sections("ReportFooter").controls("costospedizione").Caption rpt.Sections("PageFooter").controls("aspetto1").Caption = rpt.Sections("ReportFooter").controls("aspetto").Caption rpt.Sections("PageFooter").controls("corriere1").Caption = rpt.Sections("ReportFooter").controls("corriere").Caption rpt.Sections("PageFooter").controls("porto1").Caption = rpt.Sections("ReportFooter").controls("porto").Caption End Sub Pur non avendo acesso al DB dal page footer e' possibile copiare i valore settati nelle label. Poi basta settare la proprieta' visible dei controlli originali a False. Consiglio anche di ridurli di dimensioni al minimo, altrimenti occuperanno sempre lo stesso spazio sulla stampa ed avrete delle aree vuote. Allo stesso modo e' possibile referenziarsi agli altri oggetti "giocando" con le loro proprieta' o quelle del recordset, ad esempio introducendo la lettura facilitata sui vostri moduli (righe bianche intervallate da riche in grigetto). Si possono omettere anche intere sezioni del report, ad esempio nella seconda pagina di stampa (per guadagnare spazio) di un report si puo' omettere il report header, quindi tutta la vostra intestazione. Altro esempio: Vi da fastidio che sulla destinazione diversa della merce compaiano le parentesi tonde senza dati anche quando non esiste destinazione diversa? Inserite il seguente codice nel "Report Header" e scomparira' per magia: Sub OnFormat if rpt.Sections("ReportHeader").controls("Aggiuntiva_RagioneSociale").Caption = "" then rpt.Sections("ReportHeader").controls("Aggiuntiva_RagioneSociale").visible = false rpt.Sections("ReportHeader").controls("Aggiuntiva_Indirizzo").visible = false rpt.Sections("ReportHeader").controls("Aggiuntiva_Luogo").visible = false end if End Sub Ricordo a tutti che il componente di stampa dei report compila le sezioni dei report nel seguente ordine: 1) Page header 2) Report Header 3) Detail 4) Report Footer 5) Page Footer Pertanto se copiate dei valori, od impostate proprieta' prima ancora che vengano compilate potreste ottenere degli errori od effetti indesiderati. In sostanza dalle sezioni successive e' possibile modificare le precedenti, non viceversa. Ad esempio dal report Footer potete modificare il Page header o report header o dettagli (difficile dato che vengono caricati da DB), ma non il contrario. Attenzione che la riga di dettaglio viene "eseguita", letta e scritta tante volte quante sono le righe del vostro documento, va pertanto modificata da se' stessa. NATURALMENTE NON FACENDO PARTE DEL PERSONALE DI SVILUPPO O ASSISTENZA DI ALCA E NON ESSENDO INFORMATO SUI PROSSIMI SVILUPPI DEL PROGRAMMA QUESTE INDICAZIONI POSSONO VARIARE CON LO SVILUPPO DEL GESTIONALE E POTRANNO ESSERE NON PIU' VALIDE NELLE PROSSIME VERSIONI, pertanto valutate bene cio' che fate. La referenziazione degli oggetti all'interno del report, finche' AlCa utilizzera' ActiveReport, e' sempre valido. A voi la "palla" per le idee successive. Thomas Nordlink

7 Replies

Reply to Thread
0
Enrico Ferraro Replied
May 5, 2008 at 1:57 AM
A quanto pare il suo articolo è piuttosto letto (nonostante manchino i grazie): sono sicuro che in molti ne trarranno vantaggio. Grazie! www.info2000.biz
0
Demetria Fundament Replied
May 5, 2008 at 1:57 AM
Prego, ma mentre scrivevo ero conscio del fatto che la riconoscenza albeggia in sempre piu' rari e nobili cuori. Il gestionale e' valido e merita un po' di attenzione. C'e' pero' una cosa che e'... indefinibile dal punto di vista dell'utilizzo. Sinceramente nonostante il mio impegno NON credo di acquistarlo finche' rimarra' cosi'. E' la scelta dei prodotti da inserire in fattura o preventivo, per i documenti in ingresso o in uscita. Dire che e' scomodissima e dir poco! Scusate la critica, spero costruttiva, ma sembra proprio che quella parte l'abbiate usata o testata ben poco. Se vuole le posso esporre il mio punto di vista chiamandola al numero presente su "contatti", oppure dovra' attendere il mio prossimo post nella sezione dei consigli, oppure se non ricordo male credo di averle lasciato gia' in fase di registrazione il mio indirizzo email, puo' utilizzarlo per uno scambio piu' diretto di opinioni o per un reciproco e proficuo proseguimento di sviluppo sw per entrambi. Thomas Norlink
0
Enrico Ferraro Replied
May 5, 2008 at 1:57 AM
Sicuramente il metodo migliore è quello del post nei consigli: in questo modo ne resta traccia della implementazione e saprà quindi quando la richiesta sarà soddisfatta. www.info2000.biz
0
Demetria Fundament Replied
May 5, 2008 at 1:57 AM
Non manchero'. Anche perche' cio' che suggerisco, a mio modo di vedere, e' poco piu' di un restyling grafico. Ma cosi' com'e' davvero e' inutilizzabile. Thomas Nordlink
0
Enrico Ferraro Replied
May 5, 2008 at 1:57 AM
Mi lasci aggiungere che magari non la soddisfa ma inutilizzabile mi sembra un po' troppo... www.info2000.biz
0
Demetria Fundament Replied
May 5, 2008 at 1:57 AM
Beh guardi, non voglio far polemica, [:)] ma probabilmente non mi sono spiegato bene. Le allego uno screenshoot, e mi spieghi perche' con tutto lo spazio che c'e' sullo schermo io debba per forza scegliere gli articoli da un francobollo di finestra: Download Attachment:[url="/public/upload/200582155328_nordlink_Francobollo.JPG"][img]icon_paperclip.gif[/img]Francobollo.JPG[/url]
75.37 KB Capisco che tecnicamente si gioca sulla visibilita' degli oggetti (la finestra in tutti i casi e' sempre quella) ma quella non e' la soluzione piu' felice. Non credo che lei possa dirmi che ho torto. Se ve lo faccio notare con forza e' perche' spererei di coprire una certa mia clientela proponendo un gestionale come il vostro. La mia critica riguarda principalmente quello. Il resto del gestionale a mio modo di vedere e' buonissimo, a cominciare dall'SDK, mossa vincente per una sua diffusione. Programmo da 10 anni in vari linguaggi, ho perfino sviluppato parti di un gestionale di cui non voglio fare il nome, ma che costa migliaia di volte piu' del vostro, utilizza vari DB anche in modalita' nativa e non tramite ODBC e la cui complessita' richiede un flowchart che se stampato copre piu' oltre 30 mq, ma credetemi, quella finestra (o parte) non va davvero bene. Per me lo rende inutilizzabile, l'idea si puo' ritenere buona, lo sviluppo dell'IDE utente da principiante alle prime armi di Visual Basic. La sezione degli articoli e' scomodissima, l'albero di scelta esce dall'area visualizzabile, e sono costretto a far scorrere la finestra, nella selezione per gruppi non esiste nessun riferimento oltre al codice articolo. Insomma segua il mio ragionamento. Nel 90% dei casi se qualcuno inserisce un articolo: - ricorda il codice e lo inserisce, il gestionale compila i campi rimanenti - sa a che categoria appartiene e lo seleziona mediante ricerca analitica (proprio perche' non ricorda il codice). Ora, se nella selezione per gruppi/categorie viene proposto solo il codice, io sono costretto per forza a controllare tutti gli articoli (magari oltre 3000) di quella categoria, e ripeto a selezionarli da un francobollo. Un gestionale serve per organizzare il lavoro ed offrire un certo risparmio di tempo nella (appunto) gestione. Se sono costretto a far scorrere la barra quello non e' risparmio di tempo, se devo scorrere 3000 articoli solo perche' il gestionale non mi da quelche informazione in piu' oltre al codice non e' risparmio di tempo = unitilizzabile o non adatto per lo scopo prefisso per le necessita' di chiunque. Altre note tecniche: Il treeView standard in VB e' pesantissimo, suggerisco di limitarlo, meglio includere nel progetto i controlli Forms2 (che per altro avete incluso nell'import degli articoli) ed utilizzare quelli, sono velocissimi. Ho fatto delle prove ed il tempo impiegato e' di 1/10-1/20 rispetto ai controlli standard di VB (per esempio utilizzando le textbox, molto di piu' per il RitchTextBox). Eventualmente valutare di utilizzare una griglia per la consultazione ed inserimento articoli, che pur essendo pesante offre sicuramente la migliore tra le visuali possibilli. Tutto questo verra' riportato nel post di suggerimenti insieme ad altro... spero verra' tenuto in considerazione fin da ora visto che ormai sono stato stuzzicato in tal senso. [}:)] [:)] Thomas Nordlink
0
Enrico Ferraro Replied
May 5, 2008 at 1:57 AM
Condivido dal punto di vista utente quanto scrive, bisogna considerare anche i due fattori: 1) la maggior parte degli utenti usano ancora una risoluzione 800x600 2) il box di ricerca è un controllo: non esattamente un semplice tab (di qui i problemi di ridimensionamento) Non esiti a postare...finchè sono suggerimenti ben vengano! www.info2000.biz

Reply to Thread