Errore in stampa report

lunedì 27 aprile 2009 - 17.30

yuri85 Profilo | Junior Member

Ciao,

ho creato un'applicazione in vb.net che utilizza alcuni reports creati con Crystal Report 10.5 di visual studio.

Ho quindi installato la mia applicazione su un'altra macchina e installato il Crystal Report 10.5 Basic Runtime per visual studio 2008
(trovato qui dentro-> C:\Programmi\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5) .

Quando però vado a stampare mi da il seguente errore

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

sembra che non trova il file (che tra l'altro non capisco perchè lo vada a cercare nella cartella temporanea dell'utente).

é un problema a livello di codice dell'applicazione oppure è sbagliato il runtime che ho installato? bisogna aggiungere delle librerie?


grazie !!

luxsor Profilo | Guru

Ciao Yuri,
posta il codice che utilizzi

yuri85 Profilo | Junior Member

semplicemente questo ...

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

da visual studio funziona .. su un altro pc dice impossibile collegarsi: accesso ai parametri non corretto

luxsor Profilo | Guru

Ciao Yuri,
scusa per il ritardo.

Questo errore non è dovuto alle librerie report.
Sembra che il problema sia dovuto al fatto che non trova o il report nel percorso assegnato o la sorgente dati che fai riferimento nel report.

Ti consiglio di provare a specificare tutto il path del report senza la costante StartupPath
Dim reportPath As String = C:\programmaMio\report\stampapizzaiolo.rpt"

Che sorgente dai hai importato?

Fammi sapere


------------------------
Luxsor

freeteo Profilo | Guru

Ciao ragazzi,
dando un'occhiata all'exception che ti appare sembra sia un problema di dati passati al report, infatti "Unable to connect: incorrect log on parameters." probabilmente è dovuto al fatto che il db è cambiato (tipicamente infatti fai un report che punta ad un db di sviluppo, ma poi lo rilasci ai clienti e quindi il db è quello effettivo) e non sono corretti i parametri di connessione, o non sono stati impostati a tutte le tabelle (o sottoreport).

Io solitamente consiglio un codice di questo tipo per essere sicuro che tutto venga impostato correttamente:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=21962
(in particolare il primo dei 2 nel tuo caso) magari mettendo un ciclo foreach per le varie table, invece nell'esempio di codice imposta solo quella di indice "0".
Analogamente come ti dicevo, controlla se hai qualche sottoreport.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

yuri85 Profilo | Junior Member

... ma il database è identico .. il software si collega allo stesso server dove risiede il database.

Questo è il codice:

rptdocument = New ReportDocument() Dim reportPath As String = Application.StartupPath & "\Report\xxxxxx.rpt" rptdocument.Load(reportPath) Dim tabella As New DataTable Dim miaDataAdapter As New SqlClient.SqlDataAdapter(v_stringSQL, DB) miaDataAdapter.Fill(tabella) rptdocument.Load(reportPath) rptdocument.Database.Tables(0).SetDataSource(tabella) rptdocument.SetDatabaseLogon(UserID, Password, Server, Database) rptdocument.PrintToPrinter(1, False, 1, 1)

come mai quindi sul pc di sviluppo funziona e su un altro no? GRAZIE


ho provato anche così:

' rptdocument.Load(reportPath) Dim crConnectionInfo As ConnectionInfo = New ConnectionInfo() ' Dim crTableLogOnInfo As TableLogOnInfo ' Dim tb As CrystalDecisions.CrystalReports.Engine.Table ' crConnectionInfo.ServerName = server ' crConnectionInfo.DatabaseName = db ' crConnectionInfo.UserID = id ' crConnectionInfo.Password = pass ' For Each tb In rptdocument.Database.Tables ' crTableLogOnInfo = tb.LogOnInfo ' crTableLogOnInfo.ConnectionInfo = crConnectionInfo ' tb.ApplyLogOnInfo(crTableLogOnInfo) ' Next rptdocument.PrintToPrinter(1, False, 1, 1)

... e così non va nemmeno sul pc di sviluppo.

freeteo Profilo | Guru

Ciao,
potrebbe essere un problema della proprietà "Location" della table del report?
Verifica a debug se percaso anche a runtime ha qualche riferimento sbagliato (magari hai cambiato il nome del database).

Potrebbe essere che nella macchina di sviluppo hai una versione differente da quella che hai nella macchina dove fai il deploy?

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

yuri85 Profilo | Junior Member

finalmente funziona!

posto il codice nel caso possa esser utile ad altri.

Dim tb As CrystalDecisions.CrystalReports.Engine.Table Dim i As Integer = 0 For Each tb In rptdocument.Database.Tables tb.LogOnInfo.ConnectionInfo.ServerName = **** tb.LogOnInfo.ConnectionInfo.DatabaseName = **** tb.LogOnInfo.ConnectionInfo.UserID = **** tb.LogOnInfo.ConnectionInfo.Password = **** tb.LogOnInfo.ConnectionInfo.Type = ConnectionInfoType.CRQE rptdocument.Database.Tables(i).Location = tb.Location i += 1 tb.ApplyLogOnInfo(tb.LogOnInfo) Next

freeteo Profilo | Guru

>finalmente funziona!
ottimo, era la proprietà location?

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

yuri85 Profilo | Junior Member

>>finalmente funziona!
>ottimo, era la proprietà location?
>
>Ciao.
>
>Matteo Raumer
>[MVP Visual C#]
>http://blogs.dotnethell.it/freeteo

Esatto!! grazie
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