|
Cosa è RDC6 e dove lo si trova
RDC (Report Designer Component) 6.0
è un programma della Seagate Software e serve per la creazione visuale di report e
grafici basati su dati provenienti da database. E' possibile usarlo per creare report
anche molto complessi accedendo ai database con l'ausilio delle librerie DAO o ADO. Esso
supporta i sottoreport ed è quindi possibile creare dei report nidificati che estraggono
dati da fonti diverse presentando poi un report contenente più sezioni. A differenza del
vecchio Crystal Reports 4.6 funziona come un "Designer" ("finestra di
progettazione" per chi usa VB in italiano), e quindi per progettare i report ci si
serve dello stesso IDE di VB. Questo potrebbe far sembrare RDC6 un prodotto inferiore al
CR 4.6, ma in realtà RDC6 è estremamente più potente: forse il suo maggior punto di
forza rispetto alla vecchia versione è proprio la gestione dei sottoreport, ma non
dimentichiamo l'anteprima con gestione dei gruppi, la ricerca di testo nel report e
l'esportazione del report a runtime in diversi formati.
RDC6 è in pratica il sostituto del Crystal Reports 4.6 fornito insieme a VB5 e VB6, ed è
liberamente utilizzabile per gli utenti registrati di questi prodotti.
E' possibile scaricarlo partendo da questo indirizzo (salvo variazioni dell'ultim'ora): http://www.seagatesoftware.com/vb/
Occhio che sono 13Mb, anche se quando l'ho scaricato io era diviso in file da circa 3Mb.
ATTENZIONE! Installando RDC6 su un PC con CR 4.6 quest'ultimo non funzionerà più! Questo
perchè ogni nuova versione del prodotto Seagate ha il brutto vizio di non mantenere la
compatibilità all'indietro e sovrascrive le vecchie librerie con nuove versioni non
compatibili. |
E' possibiler
usare ancora i report rpt con RCD6 ?
Per quanto riguarda i report
esistenti, si può importarli usando l'apposita opzione del RDC6. Per i nuovi report non
è necessario includere il Designer nel programma che usa il report. RDC6 ha una opzione
nella toolbar "Save to Crystal Report file" che salva il report in formato RPT.
Questa è la soluzione che consente di avere un programma più "leggero" senza
portarsi appresso l'intero Designer che è piuttosto pesante. Usando i file RPT si perde
però la possibilità di inserire del codice VB nei vari eventi del report, quindi bisogna
considerare anche questo aspetto nella scelta del metodo di distribuzione.
Usando il report salvato in formato RPT è possibile creare una istanza dell'oggetto
CRAXDRT.Report da utilizzare nel CRViewer o da stampare. Esempio:
Dim app As CRAXDRT.Application
Dim rep As CRAXDRT.Report
'Il secondo parametro serve ad
aprire il file rpt in modo condiviso e non esclusivo
Set rep = app.OpenReport("file.rpt", 1)
'Da qui in poi è possibile
gestire il report nel modo consueto
Da notare che è necessario per
usare questa tecnica inserire tra i riferimenti del programma la libreria CRAXDRT.dll.
Stranamente questa di solito non appare tra le librerie ActiveX registrate: bisogna
cercarla manualmente con il tasto "sfoglia" e includerla, dopodichè salvare il
progetto. Potrebbe anche succedere che riaprendo il progetto il riferimento a CRAXDRT.dll
"sparisca" misteriosamente. Non conosco la causa del problema, ma a me è
accaduto con VB6 SP1 e ho dovuto ripetere l'operazione di registrazione libreria e
salvataggio del progetto due o tre volte prima che il problema sparisse. |
RDC6 e la password in MDB
Ho sviluppato un software in VB
con il quale accedo ad un MDB con password. Ora voglio effettuare delle stampe tramite
RDC6, ma mi sono accorto che lanciando l'applicazione, al momento della stampa questa mi
chiede la password dell'MDB. Come si fa a fornire in modo automatico la password?
Puoi farte così:
'objReport è il report da
stampare
'DBName è una stringa che contiene il pathname completo del file mdb
'Password contiene la password per l'accesso al file mdb
With objReport.Database.Tables(1)
.Location = DBName
.SetLogOnInfo DBName, , , Password
End With
E se hai un subreport che punta ad
un'altra tabella/query:
Set objSubReport1 =
objReport.Subreport1.OpenSubreport
With objSubReport1
.Location = DBName
.Database.Tables(1).SetLogOnInfo DBName, , ,Password
End With
'E cosi' via per tutti i subreport |
Passare variabili a RCD6 Vorrei
sapere se è possibile inviare variabili, in fase di programazione, a RDC6 e se (e come)
evenutalmente gestirle nel report.
Si deve adoperare i campi di tipo
parametro dell'oggetto Report. Si tratta di un array con base 1 che contiene tanti indici
quanti sono i parametri definiti. I campi parametro si possono poi usare dovunque nel
report: possono essere stampati, inseriti in formule ecc. Ad esempio, per passare al
report l'intestazione della ditta possiamo scrivere:
Set objReport = New CRAXDRT.Report
'L'esempio suppone che siano definiti nel report 2 campi parametro
objReport.ParameterFields(1).SetCurrentValue "Pinco Pallino S.p.A."
objReport.ParameterFields(2).SetCurrentValue "Via Roma 123 - Milano" |
Quali file servono per
installare un programma che usa RDC6
Non riesco a far funzionare i
programmi che usano i report creati con RDC6 e il controllo ActiveX CRViewer sui computer
dei clienti. Quali file devo installare per far funzionare i report?
Questo è uno dei problemi più
diffusi. In realtà gran parte delle risposte si trovano nell'help in linea del RDC6, dove
sono elencati i requisiti di sistema e la lista dei file installati da RDC6 e a cosa
servono.
Cominciamo col leggere nella sezione "Installation" che è necessario Internet
Explorer versione 3.0 o superiore. In realtà per quanto mi riguarda credo di poter
affermare che la versione di IE deve essere almeno la 3.02, installabile col CD di
Office97. Cosa c'entra IE con RDC6? RDC6 usa alcune API contenute nelle librerie
URLMON.DLL e SHLWAPI.DLL, dove la seconda è una dipendenza della prima. Entrambe le
librerie fanno parte di IE nelle sue varie versioni, e senza queste librerie fallisce la
registrazione del controllo ActiveX CRViewer.dll. Chiaramente il problema si può
presentare solo su sistemi operativi win95 o NT 3.51 o 4.0, ma non su win98 che nasce con
IE incorporato. Il rimedio consiste quindi nell'installare per prima cosa IE sul computer
target della vostra applicazione oppure includere questi due file nel pacchetto di
installazione. E qui nasce un altro problema: questi sono due file di sistema che il
programma di installazione fornito con VB5-VB6 non è in grado di sostituire se già
presenti nel PC target ma non aggiornati. La soluzione a questo problema è usare
InstallShield, Wise, Visual Studio Installer o comunque un prodotto che sia in grado di
sostituire i file di sistema durante l'installazione, altrimenti bisogna sostituirli a
mano partendo in modalità MS-DOS. Un aggiramento potrebbe essere quello di includere nel
setup le librerie della versione 3.02 di IE (Attenzione: devono avere entrambi la stessa
versione) in modo che installando l'applicazione su un PC con win98 non vengano installate
(perchè quelle esistenti sono più recenti) e che vengano quindi installate solo dove
mancanti. In questo modo i PC su cui il setup potrebbe fallire sarebbero probabilmente
molto pochi.
Un problema più insidioso si può presentare installando un report che accede ai dati
usando DAO invece del nuovo sistema "Active Data" di RDC6: infatti in questo
caso è necessario installare (basta copiarla senza registrarla) la libreria
P2BDAO.DLL.Senza questa libreria otterrete un messaggio di errore che recita qualcosa tipo
"Libreria PDBDAO.DLL non installata". Il messaggio è pure fuorviante visto che
il vero nome del file è P2BDAO.DLL e non PDBDAO.DLL. Ma dove sta questo file? Incredibile
ma vero: non è un file installato da RDC6, ma dal vecchio CR 4.6! Come se non bastasse,
in certe versioni italiane di DAO viene richiesta anche la libreria di localizzazione
P3BDAOIT.DLL, ma dovrebbe funzionare tutto anche senza.
I report creati con il sistema "Active Data" hanno invece bisogno della libreria
P2SMON.DLL per funzionare.
RDC6 ha bisogno anche di un componente del sistema operativo che potrebbe non essere
sempre presente: la libreria Video-for-Windows MSVFW32.DLL e le sue dipendenze WINMM.DLL e
DCIMAN.DLL, e tutte e tre devono avere la stessa versione. In realtà non ho mai trovato
un PC privo di questi file, probabilmente contenuti nella sezione "Multimedia"
tra i componenti del sistema operativo. |
|