Da vb6 a vb net

lunedì 13 luglio 2009 - 16.12

cippico Profilo | Newbie

con vb6 e il seguente codice:Crp1.ReportFileName = ".\ENTVAR.rpt" non aveva importanza la directory del report bastava la presenza del db access
per funzionare.Non so come fare per ottenere lo stesso risultato con vb net2008 e cr che mi offre solo la proprietà recordsource e l'ntero path. è possibile fare qualcosa per me. grazie

Jeremy Profilo | Guru

Ciao Carlo.
In .NET, devi assegnare alla proprietà ReportSource del CrystalReportViewer, un'istanza del tuo Report.
Mi spiego meglio:

dim MioReport as new MioReport Crp1.ReportSource = MioReport
dove MioReport è il report che vuoi visualizzare nel ReportViewer.

Facci sapere....
Ciao

cippico Profilo | Newbie

mille grazie tutto ok!

freeteo Profilo | Guru

Ciao,
anche se di default tutto ti funziona, ti suggerisco di dare un'occhiata a questo mio articolo di tempo fa:
http://www.dotnethell.it/articles/Crystal-Reports-Integration-Windows-Form.aspx
dove si parla di come integrare un report dentro ad un'applicazione, che nell'esempio è Win32, ma la cosa è analoga anche per applicazioni Asp.net.

Penso possa tornarti utile anche perchè domani se passi a qualche altro db, o cambia la connessione in maniera parametrica, oppure addirittura ti serve passare i dati al report perchè li hai comodi nel codice, almeno sai come muoverti.

Ciao.

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

cippico Profilo | Newbie

contrordine: quello che sembrava funzionare era perchè usava i dati e i report della directory in cui costruivo il mio programma!
ho usato quanto suggerito dal post indicato ma il problema persiste. cerco di chiarire il mio problema:
in una directory metto il db,i file di report e l'eseguibile. ma mentre l'eseguibile mi lega il db (indicato in vbnet con .\cont.mdb) non riesce invece legare al crystalreportviewer i report. spero di essere stato chiaro? potete aiutarmi. grazie

Jeremy Profilo | Guru

Ciao Carlo.
Se il report che hai progettato risiede (è incluso) all'interno del tuo progetto/soluzione, allora puoi crearne una nuova istanza, in quanto tipo, seguendo le indicazioni come da mio precedente post.
Qualora non fosse così, allora devi creare un'istanza generica e caricare il Report(specificandone il percorso) con i metodi che ti fornisce la classe Report.
Il concetto, fondamentalmente, rimane lo stesso.

Facci sapere...
Ciao

freeteo Profilo | Guru

Ciao cippico,
come ti dicevo prima, prova a fare il codice mostrato in quell'articolo, ed eventualmente posta il codice che hai usato che magari c'è qualche piccolo errore.
Probabilmente sarà un problema di percorso del db, o qualcosa che imposti delle LogonInfo che non è corretto...

Ciao.

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

cippico Profilo | Newbie

scusate ma vi devo due precisazioni: 1 - uso vb net basic e file di access - 2 - sono un principiante autodidatta
dopo ricerche varie su 'logoninfo' e simili che non sapevo esistessero ho elaborato la routine che allego ma che non risolve il mio problema 8il db risulta aggiornato ma non altrettanto i report)Imports System.Data.OleDb
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
Form2.CRV1.SelectionFormula = ("{movimenti.conto}='Cassa'")
Form2.ShowDialog()
Form2.Text = "SITUAZIONE CASSA"
End Sub

Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Public Class Form2
Private Rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Private Sub CRV1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CRV1.Load
Dim Cred As New TableLogOnInfo
Rpt.Load("C:\Documents and Settings\carlo pezzati\Documenti\Contabilità Centro\Contabilita\Contabilita\Rcassa.rpt", CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault)
Cred.ConnectionInfo.DatabaseName = ".\cont.mdb"
Cred.TableName = "movimenti"
Rpt.Database.Tables(0).ApplyLogOnInfo(Cred)
'CRV1.LogOnInfo.Add(Cred)
CRV1.ReportSource = Rpt
End Sub
End Class
la routine che prima usavo, per me molto più semplice era la seguente
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
Dim Mcassa As New Rcassa
Form2.CRV1.ReportSource = Mcassa
Form2.CRV1.SelectionFormula = ("{movimenti.conto}='Cassa'")
Form2.ShowDialog()
Form2.Text = "SITUAZIONE CASSA"
End Sub
mi scuso sinceramente per la mia ignoranza. grazie dell'aiuto
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