Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Crystal Reports e reportistica
Errore lancio report
giovedì 04 gennaio 2007 - 01.32
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mr_rox\
Profilo
| Newbie
32
messaggi | Data Invio:
gio 4 gen 2007 - 01:32
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
6.542
messaggi | Data Invio:
ven 5 gen 2007 - 00:05
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
Torna su
Stanze Forum
Elenco Threads
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 !