199 messaggi dal 12 aprile 2006
A seguito post precedenti e problematiche esposte in parte risolte, mi ritrovo il seguente problema :
Devo passare un data set al report e con questo codice ottengo quello che voglio:
Sub ConfiguraCrystalReports()
Elencorep = New ReportDocument
Dim reportPath As String = Server.MapPath("ElencoTeso.rpt")
Elencorep.Load(reportPath)
Dim dsvar As New DataSet
Dim connectionString As String = "DSN=DBPARKWAY"
Dim queryString As String
queryString = "SELECT pippo, pluto ecc..."
Dim connection As New Odbc.OdbcConnection(connectionString)
Dim Wadapter As New Odbc.OdbcCommand(queryString, connection)
Dim AppoAdapter As New Odbc.OdbcDataAdapter(Wadapter)
' Open the connection and fill the DataSet.
Try
connection.Open()
' AppoAdapter.Fill(dsvar) !!!! NON FUNZIONA IN QUESTO MODO !!!!
AppoAdapter.Fill(dsvar, "TAB1")
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Elencorep.SetDataSource(dsvar)
CrystalReportViewer1.ReportSource = Elencorep
End Sub

IL MIO PROBLEMA ORA RIGUARDA IL FATTO CHE ESSENDO LA SELECT CON UNA JOIN DI DUE TABELLE, IN ADAPTER.FILL COME FACCIO A GESTIRLE ?
POSSO FARE : AppoAdapter.Fill(dsvar, "TAB1, TAB2") ?
PURTROPPO NON POSSO FARE UNA VISTA e ACCEDERVI IN QUANTO LA FONTE DATI E UN DRIVER DI ACCESSO DIRETTO ALLA FONTE DATI ODBC SU FILE ISAM.

COME POSSO FARE ?
GRAZIE
Lauran wrote:
' AppoAdapter.Fill(dsvar) !!!! NON FUNZIONA IN QUESTO MODO !!!!

non scrivere in maiuscolo, è come urlare.
detto questo, non funziona cosa vuole dire? hai un errore?
con una query del genere, senza specificare il nome della tabella, hai perfettamente accesso a tutte le colonne, che vengono mischiate come se fosse una sola tabella di risultato. specificare TAB1 o no come valore non cambia granchè, perchè viene comunque presa in gestione la query che hai specificato, non il testo messo come scrTable.
btw, con un ODBCDataReader ottieni la stessa cosa e probabilmente meglio, non ho idea se Crystal Report supporti un DataReader come fonte, ma tentare non nuoce

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
199 messaggi dal 12 aprile 2006
Purtroppo sto provando in tutti i modi e se inserisco la tabella in Adapter.fill funziona altrimenti sta sempre in elaborazione.
Eppure questo è un classico esempio di passaggio dati al Report ma non c'è un'altro modo di passare il dataset ?
Grazie
199 messaggi dal 12 aprile 2006
Possibile che avendo questo codice :
Sub ConfiguraCrystalReports()
Elencorep = New ReportDocument
Dim reportPath As String = Server.MapPath("ElencoTeso.rpt")
Elencorep.Load(reportPath)
Dim dsvar As New DataSet
Dim connectionString As String = "DSN=DBP"
Dim queryString As String
queryString = "SELECT Col1, Col2, ecc. FROM Tab1"
NB.:
(???? io devo utilizzare "SELECT Col1, Col2, ecc. FROM Tab1, Tab2, tab3"

Dim connection As New Odbc.OdbcConnection(connectionString)
Dim Wadapter As New Odbc.OdbcCommand(queryString, connection)
Dim AppoAdapter As New Odbc.OdbcDataAdapter(Wadapter)
Try
connection.Open()
AppoAdapter.Fill(dsvar, "Tab1")
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Elencorep.SetDataSource(dsvar)
CrystalReportViewer1.ReportSource = Elencorep
-------------<<<

che fra l'altro funziona non riesco a venirne a capo se non con l'aiuto di qualcuno.
Ribadisco ancora che questo codice va tutto bene tranne il fatto che Utilizzo una Join fra tabelle nella Select e pertanto se uso solo AppoAdapter.Fill(dsvar) non funziona mentre con una sola tabella :
AppoAdapter.Fill(dsvar, "MANDATID") è oK.
Come posso fare ?
GRazie
213 messaggi dal 25 settembre 2006
forse il problema è nel report, nel senso che forse si aspetta un dataset con tutte le tabelle da cui prendere i dati e tu invece gli passi un dataset con una sola tabella.

Non conosco CrystalReport, ho solo provato ad indovinare...

Ciao.
199 messaggi dal 12 aprile 2006
RISOLTO IL PROBLEMA !!!!!!
L'Indizio di Daniele era giusto !


in pratica ho utilizzato quanto segue :

------->
Sub ConfiguraCrystalReports()
Elencorep = New ReportDocument
Dim reportPath As String = Server.MapPath("ElencoTeso.rpt")
Elencorep.Load(reportPath)
Dim dsvar As New DataSet
Dim connectionString As String = "DSN=DBP"
Dim queryString As String
queryString = "SELECT Col1, Col2, From Tab1, Tab2 "
Dim connection As New Odbc.OdbcConnection(connectionString)
Dim Wadapter As New Odbc.OdbcCommand(queryString, connection)
connection.Open()
Dim myIDataReader As IDataReader = Wadapter.ExecuteReader()
Elencorep.SetDataSource(myIDataReader)
CrystalReportViewer1.ReportSource = Elencorep
End Sub
----->
Grazie a tutti anche a te Gyppo.. Gentilissimo
A presto
Lauran wrote:
RISOLTO IL PROBLEMA !!!!!!
L'Indizio di Daniele era giusto !


DataReader vince sempre
http://blogs.aspitalia.com/daniele/post2189/DataSet-Web-Male.aspx
Elencorep.SetDataSource(myIDataReader)
CrystalReportViewer1.ReportSource = Elencorep

DataReader, Command e Connection implementano l'interfaccia IDisposable, quindi devi richiamarne sempre il metodo Dispose() dopo averli usati, pena un decadimento netto delle prestazioni e nel caso di Connection, un blocco totale delle connessioni successive.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
199 messaggi dal 12 aprile 2006
Nel mio caso e con il codice postato va fatto subito prima di
CrystalReportViewer1.ReportSource = Elencorep
o dopo ?
e devo inserire solo Dispose() ?
Potrebbe essere questo il problema per cui è lento nella creazione del report e dello stesso Export in PDF ?
Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.