Ciao a tutti, tempo fa ho avuto un problema simile, risolto, ma con il nuovo Visual Studio 2010 e la nuova versione del Crystal Report mi si è ripresentato.
Io ho la necessità di caricare i risultati di una query composta dinamicamente in un semplice report.
Ho optato per la seguente procedura:
1 - Creare un dataset trascinando la tabella del mio database all'interno della finestra "crea nuovo dataset" di vs2010
2 - Creare un report di crystal tramite wizard passandogli il mio dataset
3- Creato un form con un report viewer vuoto
Ora per caricare i dati ho provato svariati metodi, ognuno dei quali genera lo stesso errore. Qui di seguito trovate il codice di una delle prove:
Dim report As New ReportDocument
report.Load("rptScheda.rpt")
report.SetDataSource(Schede.ReportSchede.Rows)
crvStampa.ReportSource = report
crvStampa.RefreshReport()
E l'errore che ottengo è: "system.data.duplicatenameexeption: una colonna denominata 'Item' appartiene già a questa datatable".
Devo apportare delle modifiche alla mia 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.