Errore lancio report

giovedì 04 gennaio 2007 - 01.32

mr_rox\ Profilo | Newbie

Cioa a tutti...
finalemnte sono riuscito a installare la mia applicazione sui vari client ( vb.net con db oracle e uso di Crystal Report integrato con visual studio)
tutto ok ...ma la momento del lancio di uno qualsiasi dei report mi esce questo errore:

System.Exception: Load report failed. ---> System.Runtime.InteropServices.COMException (0x80004005): Impossibile trovare il percorso specificato.
at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
--- End of inner exception stack trace ---
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

Mi fermo qui con l'errore anche se la descrizone continua per circa 100 righe..
Qualcuno puo' aiutarmi a risolvere...non hocapito una mazza...

Per popolare un report ho fatto questo semplice codice:




Dim crReportDocument As CR_presa_in_carico = New CR_presa_in_carico ' report
Dim frm_st As New Frm_stampe ' form conteneteil viewer
Dim conta As Integer

' Estrazione intestazione e la passiamo come parametro .
Dim query As String
Dim op As New Cls_operazioni_db
Dim dr As OleDbDataReader

' inserire il dataset con i dati dei debitori..

Dim adoOleDbConnection As OleDbConnection
Dim adoOleDbDataAdapter As OleDbDataAdapter
Dim dataSet As DataSet
Dim connectionString As String = ""
connectionString = stringa_di_connessione ' stringa di connessione al db oracle

adoOleDbConnection = New OleDbConnection(connectionString)


Dim sqlString As String

sqlString = "select pro.ID_PROTOCOLLO,deb.denominazione,deb.indirizzo,deb.localita,deb.PROVINCIA "
sqlString = sqlString & " from tab_protocollo pro, tab_debitore deb"
sqlString = sqlString & " where pro.id_cliente='" & next_id_cliente.PadLeft(5, "0") & "' and "
sqlString = sqlString & " pro.id_debitore=deb.id_debitore and"
sqlString = sqlString & " to_char(data_attivazione,'DD/MM/YYYY') = to_char(sysdate,'DD/MM/YYYY')"

adoOleDbDataAdapter = New OleDbDataAdapter(sqlString, adoOleDbConnection)


dataSet = New ds_presa_in_carico
adoOleDbDataAdapter.Fill(dataSet, "tab_rep_presa_in_carico") ''popolo il dataset fatto a immagine e somiglianza della tabella


crReportDocument.SetDataSource(dataSet)

' questi sono tutti parametri che passo al report
query = ""

query = "select lettera ,frase,posizione,font_frase from tab_int_lettere "

query = query & " where lettera ='Presa in Carico'"
query = query & " order by posizione"
conta = 1
Dim str_valore As String
dr = op.ExecuteQuery(Cls_operazioni_db.ReturnType.DataReaderType, query)
If dr.HasRows Then
Do While dr.Read

If dr.Item(1) <> " " Then
'crReportDocument.Section1.ReportObjects("intriga11") = 100
str_valore = dr.Item(1)

crReportDocument.SetParameterValue(conta, dr.Item(1))
conta = conta + 1
End If

Loop
If conta < 9 Then
Dim i As Integer
For i = conta To 8
crReportDocument.SetParameterValue(i, " ")
Next i

End If
Else
MsgBox(" Per la lettera di 'Presa in Carico' non e' stata ancora immessa l'intestazione", MsgBoxStyle.Critical, "Attenzione")
Exit Sub
End If

query = ""

query = "select frase1 ||frase2 from tab_frase_lettera "
query = query & " where lettera ='Presa in Carico'"

conta = 1

dr = op.ExecuteQuery(Cls_operazioni_db.ReturnType.DataReaderType, query)
If dr.HasRows Then
dr.Read()
crReportDocument.SetParameterValue(0, dr.Item(0))
Else
MsgBox(" Per la lettera di 'Presa in Carico' non e' stata ancora immessa il testo", MsgBoxStyle.Critical, "Attenzione")
Exit Sub
End If

query = "select to_char(sysdate,'dd Month YYYY' ) from dual"
dr = op.ExecuteQuery(Cls_operazioni_db.ReturnType.DataReaderType, query)
dr.Read()
crReportDocument.SetParameterValue(9, dr.Item(0))

query = "select nvl(denominazione,' ') , nvl(indirizzo,' ') , cap || ' - ' || localita || ' - ' || provincia from tab_cliente "
query = query & " where id_cliente='" & next_id_cliente.PadLeft(5, "0") & "'"

dr = op.ExecuteQuery(Cls_operazioni_db.ReturnType.DataReaderType, query)
dr.Read()

crReportDocument.SetParameterValue(10, dr.Item(0))
crReportDocument.SetParameterValue(11, dr.Item(1))
crReportDocument.SetParameterValue(12, dr.Item(2))
' fine parametri

frm_st.CrystalReportViewer1.ReportSource = crReportDocument

frm_st.CrystalReportViewer1.Show()
frm_st.Text = " Lettera di 'Presa in Carico'"
Me.Enabled = False
frm_st.Show()




grazie a chiunque vorra' rispondermi
Rocco

freeteo Profilo | Guru

ciao,
da quanto vedo, il report non viene caricato correttamente, probabilmente perche' la classe che hai usato non lo carica giusto in fase di runtime, infatti l'errore è proprio "...Impossibile trovare il percorso specificato..." quindi non riesce a caricare il file ".rpt" per intenderci.

Quello che ti consiglio io (anche nell'ottica di evitare di ricompilare l'applicazione per eventuali aggiornamenti del report) è di fare a meno di usare la variabile che ti da visual studio, ovvero "Cr_presa_in_carico".
Piuttosto usa un oggetto "ReportDocument" generico, e gli fai caricare il file "rpt", e il path glielo chiedi tu. Se ti interessa, magari lavori con la cache tu, usando sempre la stessa varibile ad esempio, e cmq sia puoipermetterti di fare la logica che ti interessa.
Per capire cosa intendo il codice è del tipo:

Dim CrReportDocument As New ReportDocument() '---- qualcosa di generico
mioreport.Load("c:\...\mioreport.prt")

e tutto il resto di codice tuo va benissimo.
L'unica cosa che cambia è che lavori con un oggetto che viene caricato in quel momento specifico che ti serve e nell'ottica di rilasciare aggiornamenti, ti basta solo sovrascrivere il file del report...tanto è quello che fa visual studio, non cambia niente solo che qui sai bene i path, puoi fare delle scelte e ti sleghi dalla "risorsa incorporata" all'applicazione...
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