Report, percorso dinamico

venerdì 03 novembre 2006 - 08.28

basicdany Profilo | Expert

Ciao, a tutti, realizzo da un bel pò stampe con cristal report incluso in vsual studio 2003, come fonte dati della stampa ho sempre utilizzato un percorso fisso, quindi decidevo un percorso per il database e agganciavo il il report al db.
Domanda:
Come posso rendere questo percorso dinamico??? mi hanno parlato di utilizzare i dataset tipizzati, ma nessuno sa come creali qualcuno può aiutarmi?

grazie a tutti ciao

freeteo Profilo | Guru

ciao,
prova a dare un'occhiata a questo thread :
http://www.dotnethell.it/forum/messages.aspx?ThreadID=8681

si parla piu o meno della stessa cosa, vedi se ti puo' essere utile
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

basicdany Profilo | Expert

Ciao, grazie tanto per l'interesse, ho visto quel forum ma non e nel caso mio, io devo attingere i dati :
Da un db di access 2000 e non sql server..

come faccio?

ciao

basicdany Profilo | Expert

Salve, nessuno puo aiutarmi? al mio problema.

grazie

freeteo Profilo | Guru

ciao,
si quello è un esempio, cambiando i provider di ado.net (quindi OleDBConnection, OleDBDataAdapter etc...) basta che ti fai la connessione e poi riempi il report con i dati che ti sei caricato in memoria.
Questa è la via piu' semplice ed è il codice che trovi piu in basso dei miei post.

Cmq sia ti puo' tornare utile il progetto in allegato questa tip:
http://www.dotnethell.it/tips/Crystal-Reports-BLOB.aspx
li dentro viene fatto la connessione ad 1db access, e passsato il datatable come sorgente dati al report.
Anche se l'esempio nasce per altri scopi (vedi la tip) ti puo' tornare utile vedere come vengono caricati i dati.

Questo è il metodo piu' agile (visto che con ado.net puoi fare anche colonne calcolate, caricare dati da fonti diverse etc...)
Se invece non vuoi passare tramite ado.net, resta l'opzione "LogonInfo", basta prendere il codice che c'e' nel post che ti ho segnalato e adattarlo 1po:
Dim mioreport as new ReportDocument() mioreport .load(server.Mappath("....")) Dim logOnInfo As New TableLogOnInfo logOnInfo = mioreport.Database.Tables.Item("Tabella").LogOnInfo logOnInfo.ConnectionInfo.ServerName = "C:\Databases\...\filedb.mdb" '--- poi ti basta girare sulle varie tabelle del report: For Each crTable In crTables crTable.ApplyLogOnInfo(logOnInfo) Next CrystalReportViewer1.ReportSource = mioreport CrystalReportViewer1.DataBind();ù

*: se usi odbc, al posto di "ServerName" devi settare il "DatabaseName"

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

basicdany Profilo | Expert

Ciao, grazie provo di certo il tuo metodo, anche se ho trovato un'altro metodo, :

1)CREO UN DATASET TIPIZZATO
2)CARICO IL DATASET COME VOGLIO
3)PASSA AL REPORT CHE CREO IL DATASET, IN QUESTO MODO IL PERCORSO NON E PIU
FISSO MA E QUELLO CHE DEFINISCO NEL DATASET.

che ne pensi?

ciao

freeteo Profilo | Guru

ciao,
va benissimo il tuo metodo, se usi 1 dataset tipizzato nel tuo progetto la cosa è sicuramente migliore perche' lavori tipizzato, sia nel design del repor che nella gestione dei tuoi campi in generale.
Quindi direi che la risposta è ok, va benissimo come fai tu!
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5