Datatable Come Datasource Report

martedì 05 luglio 2011 - 19.56
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server 2005

DkSw Profilo | Junior Member

Sintesi del Problema:
---------------------------------------------------------------------------------------------------------------------------
Sto cercando di usare una datatable come datasouce per il mio report, ma mi ritorna l'errore:
"system.data.duplicatenameexeption: una colonna denominata 'Item' appartiene già a questa datatable".

Utilizzo Visual Studio 2010 e il relativo SAP Crystal Report.


Dettagli Aggiuntivi:
(in caso vi serva altro codice o altri dettagli chiedete pure)
---------------------------------------------------------------------------------------------------------------------------

Ho creato il mio report con la seguente procedura:

1 - Creato un dataset trascinando la tabella del mio database all'interno della finestra "crea nuovo dataset" di vs2010
2 - Creato un report di crystal tramite wizard passandogli il mio dataset
3 - Creato un form con un report viewer vuoto

Carico i dati nel report con il seguente codice:

Dim report As New ReportDocument report.Load("rptScheda.rpt") report.SetDataSource(Schede.ReportSchede.Rows) crvStampa.ReportSource = report crvStampa.RefreshReport()

N.B. Report Schede è semplicemente una funzione che, eseguita una stored procedure nel db, ritorna una datatable.
_________________________________________________________________________________________________________


SOLUZIONE:
----------------------------------------------------------------------------------------
Ok, sono riusciuto a trovare una soluzione. I dati al report li passo con il corretto DataSet:
Dim report As New ReportDocument report.Load("rptScheda.rpt") Dim dt As DataTable = Schede.ReportSchede Dim tabella As New Camiceria.CamiceriaDataSet For Each riga As DataRow In dt.Rows tabella.Scheda.ImportRow(riga) Next report.SetDataSource(tabella) crvStampa.ReportSource = report crvStampa.RefreshReport()

Ottenendo un errore runtime a proposito del "crdb_adoplus.dll"

A questo punto grazie ad un articolo letto navigando un po in internet ho aggiunto le seguenti linee di codice al file config della mia applicazione:

<startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup>

Ora tutto funziona a dovere.

freeteo Profilo | Guru

><startup useLegacyV2RuntimeActivationPolicy="true">
> <supportedRuntime version="v4.0"/>
></startup>
>Ora tutto funziona a dovere.
Grazie per aver postato la soluzione, così i motori di ricercano la indicizzano e chi si trovasse ad avere un problema simile può trarne vantaggio.

Ciao.

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

DkSw Profilo | Junior Member

Figurati!
Più di qualche volta sono stato aiutato in questo forum, se mi capita di poter contraccambiare è il minimo che io possa fare.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5