Migrazione Crystal Report a rdlc

venerdì 16 aprile 2010 - 16.09

stee85 Profilo | Senior Member

Ciao a tutti,
ho un report fatto con Crystal Report e vorrei convertirlo/rifarlo in rdlc
Via codice popolavo un file di access che poi andavo a leggere nel report.
Posto un po di codice

this.WindowState = FormWindowState.Maximized; RdoReport repRdo = new RdoReport(); crystalReportViewer1.Visible = true; //Recupero i dati DataSet ds = RefreshDataSetRdo(0, ds1); string absolutePath = this.CreateAbsolutePath("RdoReport", false); //cambiare credenziali DataTableToAccess convert = new DataTableToAccess(); convert.CreateAccess(GetMdbPath(absolutePath)); convert.ResetElements(); convert.AccessTable = ds.Tables["Bid"]; convert.InsertElement("BidOwnId", ADOX.DataTypeEnum.adInteger); convert.InsertElement("BidGroId", ADOX.DataTypeEnum.adInteger); convert.InsertElement("RevOwnId", ADOX.DataTypeEnum.adInteger); convert.InsertElement("RevDes", ADOX.DataTypeEnum.adLongVarWChar, 1000); convert.InsertElement("GroDes", ADOX.DataTypeEnum.adVarWChar, 100); convert.InsertElement("CusDes", ADOX.DataTypeEnum.adVarWChar, 50); convert.InsertElement("CusOwnId", ADOX.DataTypeEnum.adInteger); convert.ExportTable(); convert.Close(); //Versione repRdo.DataDefinition.FormulaFields["version"].Text = "'" + ver + "'"; ConnectionInfo c = new ConnectionInfo(); c.ServerName = this.GetMdbPath(absolutePath); c.DatabaseName = this.GetMdbPath(absolutePath); // Applica le informazioni di connessione a tutte le tabelle del report. for (int i = 0; i < repRdo.Database.Tables.Count; i++) { // Recupera le informazioni di LogOn della tabella... TableLogOnInfo LogOnInfo = repRdo.Database.Tables[i].LogOnInfo; // ...assegna le nuove informazioni... LogOnInfo.ConnectionInfo = c; // Applica le modifiche alla tabella. repRdo.Database.Tables[i].ApplyLogOnInfo(LogOnInfo); } this.crystalReportViewer1.ReportSource = repRdo;

E' possibile fare una cosa simile?
Inoltre avevo provato a collegarmi dal nuovo report a un db di access e al salvataggio mi ha creato un file app.config
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
e un .xsd con la tabella..

Si può evitare questa cosa?

Grazie
Ste

freeteo Profilo | Guru

Ciao,
non ti serve popolare un file access per passarlo al report, ti basta riempire una collection (o un datatable) con i dati che ti interessano in memoria e poi passare quella al report RDLc con un codice di questo tipo:
DataTable table = new DataTable(); ...codice ado normale per riempirla... LocalReport report = reportViewer1.LocalReport; report.ReportPath = "c:\\....\report.rdlc"; report.DataSources.Add(new ReportDataSource("nomeDataSource", table)); reportViewer1.RefreshReport();
Chiaramente devi aver disegnato il report usando la stessa struttura dati di query sul db...
Per altre info sui report di Sql Reporting, un buon sito è questo: http://www.gotreportviewer.com

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5