Dataset come Datasource in Crystal Reports

sabato 06 dicembre 2008 - 19.18

Fateboy Profilo | Newbie

Ciao a tutti
ho il seguente problema: creo un report di Crystal Reports andando a pescare i dati da un db di access, creo un form e ci metto un viewer, se debuggo tutto ok.
Decido di cambiare la datasource al report di modo che non vada a pescare i dati direttamente dal file di access ma da un dataset che popolo così:

oleDbConnection1.ConnectionString = String.Format.... );

string select = "SELECT Nome, Cognome, Azienda, Ore FROM (OreL INNER JOIN Personale ON OreL.IDPersona =Persona.ID) INNER JOIN Azienda ON OreL.IDAzienda=Azienda.ID";

OleDbDataAdapter daR = new OleDbDataAdapter(select, oleDbConnection1);//

DataSet DatasetName = new DataSet();

daR.Fill(DatasetName, "myPersonalInfoTable");

ReportDocument mioreport2 = new ReportDocument();

mioreport2.Load(@"C:\Programmi\Gess\OreLavorateDitteReport.rpt");
mioreport2.SetDataSource(DatasetName);

crystalReportViewer1.ReportSource = mioreport2;

Il problema è che mi visualizza i dati della query che avevo impostato nella creazione del report. Per intenderci, se nell'sql ci metto un WHERE mi accorgo che lui non sta considerando come datasource il dataset perchè i dati rimangono uguali.
Dove sbaglio?

Grazie mille

freeteo Profilo | Guru

Ciao,
mi viene da pensare che sia un problema di nomi di tabelle, che passando il dataset intero non trova lo stesso nome che hai nel report.

Io cmq tipicamente giro su tutte le tabelle del report e setto i dati con SetDataSource su ogni tabella in modo da essere sicuro che vengano associati correttamente, con un codice tipo:
... DataSet mioDataSet = new DataSet(); report.Database.Tables["prima"].SetDataSource(mioDataSet.Tables["prima"]); report.Database.Tables["seconda"].SetDataSource(mioDataSet.Tables["seconda"]); ...
il resto del tuo codice sopra e sotto sembra corretto.

Ciao.

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

Fateboy Profilo | Newbie

Innanzitutto grazie mille per la risposta.
dunque..ho provato a fare come mi dicevi, solo che sembra non becchi la datatable dentro la dataset (mioDataSet.Tables["prima"]) alchè, ho pensato.. dato che ho una tabella sola cambio il tutto e creo una datatable al posto del dataset e metto tutto li dentro e la uso come datasource.. le cose cambiano, ma in maniera assurda.. tipo che ho messo nella query WHERE ID=xx ma al posto di farmi vedere le 2 righe che dovrebbero risultare, me ne vengono molte di più tutte con il nome e cognome di quello che ha quell' ID con dei valori a caso...
comincio a pensare che Crystal Report abbia qualche problema...

freeteo Profilo | Guru

Ciao,
la cosa mi sembra molto strana, usato report per anni e non ho mai avuto problemi, il fatto che duplichi da solo i record sarebbe un problema veramente clamoroso, se ne sarebbero accorti tutti
Cmq per verifica, metti un breakpoint prima di passare la datatable al report e vedi quante righe ci sono (tuaDataTable.Rows.Count)

Sicuramente qulacosa c'è nel report, magari se vuoi allegarlo o mandarmelo via email provo a darci un'occhiata...

Ciao.

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

dobova Profilo | Newbie


Comunque confermo che anche io ho lo stesso medesimo problema (in C#), con SQLExpress.
Se passo un DataSet il report visualizza tutta la tabella (3 tabelle in JOIN in realtà) e non i record del mio DataSet. Se passo solo un DataTable (esempio la [0]), perde le JOIN e visualizza un prodotto cartesiano nel report. E fin qui ci può stare dato che il DataSet contiene anche le relazioni tra le FK delle tabelle etc.....
Allora io ho creato una vista che ritorna una sola table (virtuale solo con i campi che mi interessano per il report) e a questo punto passando la Table[0] il report visualizza in modo corretto il mio DataSet. Se invece alla SetDataSource() passo il dataset completo, allora si ripresenta il problema iniziale...

Dove sta l'inghippo ???
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