SetDataSource in vb.net

lunedì 23 luglio 2007 - 15.38

Tatiana Profilo | Newbie

Buongiorno a tutti.
Sto sviluppando un progetto con vb2005 e crystal report XI. Ho messo nella mia form una datagridview che viene associata ad una tabella creata in memoria (non presente nel database) con un'istruzione di SELECT di una o più tabelle. Il tutto funziona perfettamente ma ora mi trovo a voler stampare i risultati trovati. Ho Cercato un po' ingiro e ho trovato l'istruzione SETDATASOURCE tra le funzioni di Crystal report viewer. Ho creato un report utilizzando i file TTX e ho passato nome del report, nome del file e tabella al mio report richiamato da vb2005 ma mi da un errore sulla memoria.

Dove sbaglio?

Grazie

Tatiana

freeteo Profilo | Guru

ciao,
puoi postare 1po di codice? cosi' capisco meglio...

cmq sia, intanto ti posso anticipare che se usi il metodo "setDataSource" gli puoi passare un datatable contente le varie colonne e le righe, questo almeno per il grosso dei vari tipi di connessioni disponibili.
Non ho esperienza con TTX, potrebbero esserci dei problemi ma magari intanto vediamo di escludere eventuali errori di codice...
ciao.

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

Tatiana Profilo | Newbie

Ecco un po' di codice. Ora cerco di spiegarvi bene come funziona:

In questa prima parte mi creo una tabella che lego ad una datagridview tramite un bindingSource. sQuery è la variabile testo che contiene la mia SELECT

Me.dgvTrovati.AutoGenerateColumns = True
bsDati.DataSource = GetData(sQuery)
TabeSta = bsDati.DataSource
Me.dgvTrovati.DataSource = bsDati


Private Shared Function GetData(ByVal oledbComando As String) As DataTable
Dim Conne As New OleDbConnection(My.Settings.csMangiOr2007)
Dim Comando As New OleDbCommand(oledbComando, Conne)
Dim taTrovati As OleDbDataAdapter = New OleDbDataAdapter()
taTrovati.SelectCommand = Comando
Dim Tabella As New DataTable
Tabella.Locale = System.Globalization.CultureInfo.InvariantCulture
taTrovati.Fill(Tabella)
TabeSta=tabella
Return Tabella
End Function

Una volta creata la tabella (con il dbug sono riuscita a vedere che la variabile TabeSta che è quella che passo alla form di Stampa tramete una property contiene un certo numero di colonne e di righe) richiamo una mia form di stampa dalla quale ho estrapolato un po' del codice (spero che si capisca)

' FSta11.NomeRep = CartReport & "\CercaAli.rpt"
' FSta11.FileRep(1) = CartReport & "\RicercaAli.ttx"


Come nome della connessione gli passo un file TTX (creato con Crydtal report Xi) che contiene i campi di esempio che mi servono per creare il mio report

Dim App As CRAXDRT.Application
Dim Rep1 As CRAXDRT.Report

App = New CRAXDRT.Application
Rep1 = App.OpenReport(NomeReport)

'rinfrescare i dati
Rep1.DiscardSavedData()



If strFileRep(1).IndexOf("ttx") = 0 Then
For CicloI = 1 To Rep1.Database.Tables.Count
DBTable = Rep1.Database.Tables(CicloI)
Erase sParametri
'CPProperties = DBTable.ConnectionProperties
'CPProperties.DeleteAll()
sParametri = Split(strFileRep(CicloI), ";")
iMaxP = UBound(sParametri)
Next CicloI
Else
Rep1.Database.SetDataSource(nTabe)
End If

In questo estrapolato di codice controllo se si tratta di un report che contiene un file ttx o di un report che legge i dati direttamente dal database. La parte relativa al database non l'ho trascritta tutta e comunque funziona perfettamente. Se invece devo passare al mio report una tabella che non c'è sul database uso l'istruzione setdatasource(ntabe) dove ntabe è la tabella che arriva nel modo correto alla form di stampa ma quando eseguo il programma esso si ferma sull'istruzione setdatasource dandomi un errore di MEMORIA


Crystal11.ReportSource = Rep1

Crystal11.ViewReport()


Questo è il codice e spero di avervi spiegato bene il funzionamento e cosa interessa fare a me.

Grazie

Tatiana
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