Legare un file Dataset.xsd a crystal report net

martedì 28 novembre 2006 - 16.02

trinity Profilo | Guru

Salve ragazzi,

io non riesco a fare una cosa che vi spiegherò in seguito, ora vi posto il codice che ho scritto:

tenete presente che ho creato un fil eRpt chiamato Prova.rpt e un file Dataset1.xsd all'interno del quale ho creato una tabella chaiamata RapportoTrasm

ecco il codice per riempire di dati questa tabella:

Private ObjRapp, oRapp As New PropertyDataset
Private RapportoTrasm As DataSet1.RapportoTrasmDataTable
Private RapportoTrasmMyRow As DataSet1.RapportoTrasmRow

RapportoTrasmMyRow = CType(RapportoTrasm.NewRow, DataSet1.RapportoTrasmRow)
RapportoTrasmMyRow.CodAlb = oRapp.CodiceAlbergo
RapportoTrasmMyRow.Codice = oRapp.CodiceFile
RapportoTrasmMyRow.Data_elaborazione = CStr(oRapp.DataElaborazione)
RapportoTrasmMyRow.Descrizione = oRapp.Descrizione
RapportoTrasm.Rows.Add(RapportoTrasmMyRow)


Dim RapportoRpt As New prova

quì non riesco a valorizzare la proprietà SetDataSource del file prova.rpt perchè di solito al SetDataSource ci andrebbe il dataset ma nel miop caso ho il dataset.xsd dove vi risiede la tabella quindi non riesco a trovare la soluzione.


AnteprimaReport.CrystalReportViewer1.ReportSource = RapportoRpt
AnteprimaReport.ShowDialog()


Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

freeteo Profilo | Guru

ciao,
da quanto vedo il tuo codice è corretto e ti manca soltanto di dare al report come sorgente dati proprio la variabile "RappTrasm", dato che è una tabella (tipizzata ma cmq che eredita da "dataTable") e quindi puo' essere data come sorgente dati al report:

RapportoRpt.SetDataSource(RappTrasm);

Ovviamente dal tuo codice vai a dargli solo una riga, e non so se sia giusto.
Se vuoi riempire la tabella con i dati provenienti dal db, e per farlo ci sono apposta i dataadapter, che di default ti vengono generati in automatico quando aggiungi un dataset tipizzato, saranno della forma "PropertyDataSetTableAdapters" e troverai quelli delle varie tabelle del dataset, ti basta usare il metodo "Fill" per riepire la tabella del dataset e poi passarla al report come dicevo poco fa...
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

trinity Profilo | Guru

>ciao,
>da quanto vedo il tuo codice è corretto e ti manca soltanto di
>dare al report come sorgente dati proprio la variabile "RappTrasm",
>dato che è una tabella (tipizzata ma cmq che eredita da "dataTable")
>e quindi puo' essere data come sorgente dati al report:
>
>RapportoRpt.SetDataSource(RappTrasm);


Ciao Matteo in effetti a questa soluzione ci avevo già pensato ma appena scrivo:

Dim RapportoRpt As New Rapporto
RapportoRpt.SetDataSource(RapportoTrasm)

il compilatore mi evidenzia questo seguente errore:

Errore 1 Risoluzione dell'overload non riuscita perché nessun "SetDataSource" accessibile è specifico per questi argomenti:
'Public Overridable Sub SetDataSource(dataTable As System.Data.DataTable)': Non specifico.
'Public Overridable Sub SetDataSource(enumerable As System.Collections.IEnumerable)': Non specifico. C:\Documents and Settings\Administrator\Desktop\Send.Net\Send.Net\Send.Net\InvioIstat.vb 226 17 Send.Net

Come mai?

A questo punto ho pensato di aggiungere questo:


Private Ds As DataSet
Ds = New DataSet
Ds.Tables.Add(RapportoTrasm)
Dim RapportoRpt As New Rapporto
RapportoRpt.SetDataSource(Ds)

e funziona solo che non penso in questo modo di sfruttare il dataset.xsd o comunque la table RapportoTrasm.

per il discorso del DataAdapter, io nel codice postato nel precedente post è vero che aggiungo riga per riga nella tabella del dataset ma i dati li prendo tramite questa classe:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

come posso passare la stored al dataadapter e quindi utilizzare il metodo Fill?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

freeteo Profilo | Guru

ciao,
sono stato impreciso nel precedente post, il mio ragionamento è giusto, RappTrasm eredita da "dataTable" quindi va bene come sorgente dati del report, solo che implementando anche l'interfaccia "iEnumerable", il report non sa "cosa" utilizzare della classe come sorgente e quindi da problemi di compilazione.

Se vuoi puoi castare al volo la Tabella tipizzata in DataTable praticametne e non hai problemi di compilazione, tanto sai che è una datatable a tutti gli effetti:
RapportoRpt.SetDataSource(CType(RappTrasm,DataTable))
cosi' vai tranquillo anche con il codice che usavi tu, perche gli dici di usarla come datatable normale.


Ricorda cmq che la tua funzione torna una sola riga, dovresti fare un ciclo while come ti dicevo qualvche altro post, afdeso non ricordo in quale ma ricordo che facevi solo:
if sqlCmd.Read() then
mentr invece diovresti usare un "while"..
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

trinity Profilo | Guru

OK grazie!
MA perchè essendo un DataTable a tutti gli effetti mi esce quell'errore di compilazione? Strano direi....

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

freeteo Profilo | Guru

ciao,
ti ho risposto prima, è un problema di come genera le classi il wizard di visual studio, definendo le tabelle come classi che ereditano da DataTable giustamente, ma anche che implementano IEnumerable (non so il perche')

Volendo potresti entrare nel fie che genera (ad esempio "dataset1.designer.cs") ed andare a togliere quell'interfaccia dove dichiara la classe, e funziona traqnuillamnte senza fare il cast su datatable (ovvero come ho detto nel primo post) solo che appena rigeneri il dataset lui la riscrive e quindi perdi le tue modifiche e quindi è inutile...

Se hai risolto chiudi il thread.grazie
ciao.

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