Antonio "tdj"

(C'è sempre un modo migliore)
posts - 312, comments - 268, trackbacks - 17

My Links

News







Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

Articoli

Blogs

Controlli WinForm free

Guide

Siti vari

Sviluppo

Modificare la fonte dati in Crystal Report 10

Tempo fa avevo scritto un articolo su come programmare Crystal Report (CR) da Visual Basic 6.0. Tra i vari argomenti toccati ce n’era uno piuttosto comune, ovvero quello di modificare la fonte dati del report a runtime. Bene, tutto (o quasi) quello che ho scritto è da considerarsi “Deprecated” con le versioni 9.x in poi di CR!
Ho avuto modo di provare la versione 10 (attualmente è disponibile la XI) e il metodo per modificare la fonte dati di un report da VB6 è cambiata. In parole povere si ha a che fare con una collezione di proprietà di connessione molto simile (direi identica!) a quella usata in ADO.
L’oggetto è la collection ConnectionProperties() dell’oggetto Database() (l’oggetto che contiene tutte le informazioni della fonte dati di un report CR). La sua struttura è abbastanza semplice, si tratta di una collection di oggetti ConnectionProperty() dotati di 4 proprietà di cui 2 sono le più importanti:

- Name (String): nome della proprietà di connessione;
- Value (String): valore della proprietà.

I valori possibili sono del tutto simili a quelli previsti da ADO per connettersi ad una fonte dati ma le varie combinazioni dipendono dal tipo di Provider di CR utilizzato. Un report CR usa, infatti, una specifica dll in base al tipo di provider usato nel report. Se ad esempio usiamo OLEDB verrà usata la dll crdb_ado.dll, se usiamo Microsoft Access/Excel crdb_dao.dll, e così via. Consideriamo il caso più comune, ovvero un provider OLE DB (crdb_ado.dll).
Le proprietà sono:

Nome proprietà Descrizione
Provider String. Il nome del provider OLEDB usato.
Data Source String. Il significato è identico a quello di ADO.
Database String. Nome del database.
Integrated Security Boolean. Se True, indica un accesso con autenticazione Windows.
Microsoft Data Link File String. Path di un file Data Link (udl).
User ID String. Nome utente per l’accesso al database.
Password String.


‘ Apertura del report
Dim CrApp As New CRAXDRT.Application
Dim MyReport As CRAXDRT.Report

Set CrApp = New CRAXDRT.Application
Set MyReport = CrApp.OpenReport(“C:\MyReports\Report.rpt”)

Dim DbProperties As CRAXDRT.ConnectionProperties
Dim DbProperty As CRAXDRT.ConnectionProperty

Set DbProperties = MyReport.Database.Tables(1).ConnectionProperties
Set DbProperty = DbProperties(“Data Source”)
DbProperty.Value = “192.168.0.1” ‘ oppure il nome


Semplice.

Da notare che è sufficiente modificare le proprietà della prima tabella del report (Tables(1)) in quanto automaticamente i valori verranno applicati a tutte le tabelle presenti.
Infine ricordo che la proprietà “Password” è write-only.

Come è possibile notare, un approccio basato su una stringa di connessione rende la modifica della fonte dati abbastanza semplice e flessibile, perché si ha a disposizione un “unico” modo indipendentemente dal tipo di fonte dati.

Per comprendere meglio quanto ho scritto, ho preparato un piccolo esempio in VB6 con un report che punta al database Northwind (inglese) di SQL Server. E chi non ha SQL Server? Beh… potete sempre modificare la fonte dati puntando alla versione di Access ;)

Print | posted on giovedì 16 giugno 2005 13:25 |

Feedback

Gravatar

# re: Modificare la fonte dati in Crystal Report 10

Ma va bene anche con CR9 Developer Edition ??

Ciao
Marcello Tedesco
03/02/2006 11:45 | Marcello Tedesco
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

*Soprattutto* con le versioni Developer :)
Le versioni inferiori (Professional ad esempio) non hanno tutti i componenti per lo sviluppo.

Comunque, sì, questo codice "dovrebbe" funzionare anche con la versione 9 (il condizionale è d'obbligo ma le probabilità sono molto alte)

Ciao.
03/02/2006 11:55 | Antonio "tdj" Catucci
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

Grazie !!
Provo e ti fò sapere.

Ciao
Marcello
03/02/2006 11:56 | Marcello Tedesco
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

Ho provato quello che dici con CR9, ma non ha funzionato.
Invece ho provato l'impostazione dei vecchi CR con VB6 (quelli sempre date date) e funziona alla meraviglia.
Era tanto per darvi notizia che per CR9 le vecchie impostazioni funzionano
10/02/2006 13:40 | Gabriele
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

In effetti la versione 9 non l'ho mai provata direttamente e mi sono sempre basato sull'help.

Grazie per la segnalazione Gabriele.
23/02/2006 12:44 | Antonio "tdj" Catucci
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

IO ho provato, ma da dove sbucano:
Dim CrApp As New CRAXDRT.Application
Non so cosa devo fare per cambiare questa maledetta connessione del report
09/11/2006 03:14 | Dig
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

Le dichiarazioni a cui ti riferisci fanno riferimento alle librerie di CR per la gestione dei report (vanno aggiunte dal menu Riferimenti).

Per commenti, problemi ed altro su questo articolo scrivete a:

antonio.td (at) gmail.com (sostituendo (at) con @).
11/11/2006 19:13 | Antonio "tdj" Catucci
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

Ho un report in CR 10 che carica i dati tramite una Stored Procedure, ho utizzato i tuoi suggerimenti per modificare il database da cui ricavare i dati, ma SQLQueryString mi restituisce sempre una stringa del tipo <db del report>.dbo.<nome stored procedure> quindi recupera i dati sempre dal database su cui ho creato il report.
Come posso fare?
27/03/2007 12:05 | Claudia
Gravatar

# re: Modificare la fonte dati in Crystal Report 10

questo codice funziona anche con la versine XI?
06/07/2008 14:18 | Domenico
Gravatar

# Crystal Report 10 aprire un report MDB con password

Set MyReport = CrApp.OpenReport(“C:\MyReports\Report.rpt”)
dove devo inserire la password presente nel DB in access?
31/10/2008 12:09 | gianni
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET