Passare una stringa SQL ad un file CrystalReport

lunedì 30 ottobre 2006 - 08.52

cmu3103 Profilo | Newbie

Ciao a tutti, ho bisogno di un aiuto in questo senso :
In ambiente ASP.NET ho creato un report con la lista delle province.
Vorrei però da VB.NET passare al file Crystal Report un qualcosa del tipo SELECT * FROM miatabella WHERE Provincia = 'TO'
Ho scritto il seguente codice, ma la richiesta SQL viene ignorata....cosa sbaglio ?

==============================================================

CnnString = "Valori di connessione...."
Dim oledbconnection As OleDbConnection = New OleDbConnection(CnnString)
stringaSQL = "SELECT * FROM TABLOCPRV WHERE COD_PRV = 'TO'"

Dim myRep As New CrystalDecisions.CrystalReports.Engine.ReportDocument <<<<<<<<--------


Dim RepPath As String
RepPath = Server.MapPath("CryStalReport.rpt")
Dim DA As New OleDbDataAdapter(stringaSQL, CnnString)
Dim DS As New DataSet
DA.Fill(DS)

myRep.Load(RepPath)
myRep.SetDataSource(DS)

CrystalReportViewer1.ReportSource = myRep


==============================================================


Credo che il codice errato sia la seguente dichiarazione :
Dim myRep As New CrystalDecisions.CrystalReports.Engine.ReportDocument

Non riesco a dichiarare qualcosa del tipo : Dim myRep As New CrystalReport1
Cosa posso fare per risolvere il problema ...?

RINGRAZIO TUTTI ANTICIPATAMENTE.
CIAO.


Riccardo.



freeteo Profilo | Guru

ciao,
passare al report 1a query diversa da quella che hai usato in fase di design purtroppo non è possibile, pero' puoi settare 1 filtro sui record usando la "RecordSelectionFormula" (che pero' non ha sintassi sql per intenderci).Nel tuo caso qualcosa come:

myRep.RecordSelectionFormula = "{camponumero} > 20";

Per quanto riguarda il tuo codice invece, se passi al report tu direttamente la query filtrata, guadagni agilita' nel farlo con ado.net e sicuramente meno dati caricati.
Sintatticamente parlando mi sembra corretto, ti rimando a questo esempio che ti puo' tornare utile, anche se non dal punto di vista dell'argomento specifico, ma vedi come viene caricato e riempito 1report:

http://www.dotnethell.it/tips/Crystal-Reports-BLOB.aspx

guarda infondo c'e' il file a supporto, li dentro viene caricato 1report riempito tramite ado.net, puo' tornarti utile controllare come mai il tuo codice non funziona, controlla bene in debug...
ciao.

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

CMU310301 Profilo | Newbie

Grazie Matteo,
provo a vedere gli esempi rilasciati dal link che mi hai segnato.
Spero di trovare qualcosa che mi aiuti a risolvere il problema.
CIAO !!!!

CMU310301 Profilo | Newbie

CI SONO RIUSCITOOOOOOOOO !!!!

Grazie all'aiuto di Matteo, che mi ha dato lo spunto per risolvere il problema, sono riuscito a scrivere il codice corretto affinchè il report risultasse con i records richiesti dalla stringa SQL.
In questo caso da una tabella delle province richiedo specificatamente di emettere/stampare solo il record espressi nella clausola WHERE.

Vi rilascio il codice funzionante da utilizzare su Visual Studio 2005 Professional Edition

I N I Z I O C O D I C E
================================================================

Dim myRep As New ReportDocument()
Dim myTable As DataTable
Dim RepPath As String

stringaSQL = "SELECT * FROM TABLOCPRV WHERE COD_PRV = 'CN'"
myTable = New DataTable("Tabella")




CnnString = "Parametri di connessione al db oracle ...."
Dim oledbconnection As OleDbConnection = New OleDbConnection(CnnString)
Dim DA As New OleDbDataAdapter(stringaSQL, CnnString)


RepPath = Server.MapPath("CrystalReport.rpt")
DA.Fill(myTable)
myRep.Load(RepPath)
myRep.SetDataSource(myTable)
CrystalReportViewer1.ReportSource = myRep

F I N E C O D I C E
================================================================
Spero vivamente che possa servire a qualcuno.

COMUNQUE GRAZIE A TUTTI e BUON LAVORO !!!!!

freeteo Profilo | Guru

ciao,
a parte che non ho capito bene cosa sia cambiato tra l'ultimo codice che hai scritto e quello prima, cmq se ci sei riuscito bene!
Accetta una risposta cosi' marchiamo il thread come risolto.grazie
ciao.

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

CMU310301 Profilo | Newbie

Ho inserito la definizione di DataTable che prima non era istanziato.
Chiedo scusa per l'ignoranza ma non so come chiudere il thread come risolto...penso che debba farlo tu ( almeno credo ).
GRAZIE ancora ciao.

Riccardo

freeteo Profilo | Guru

ciao,
no il thread lo chiudi tu, cliccando su "accetta la risposta" di quella che ti è tornata piu utile.
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