Crystal Report in base ai dati di un DataGridView (Visual Studio 2005)...

giovedì 26 marzo 2009 - 12.10

Rapox Profilo | Newbie

Innanzitutto, Salve a Tutti

Il mio problema è questo, da alcuni giorni ho iniziato a guardare i Report tramite Crystal Report.
Ho realizzato un modulo apposta per il Load e il DataSource del Report.
Ho immesso nell'apposita form un Crystal Viewer per la visualizzazione dei dati.

Ma il mio problema è questo, come faccio, ora, a settare i vari parametri del report.

Il database da cui vengono presi i dati non è collegato al progetto, Tutte le operazioni da me fino a ora fatte , sono state effettuate senza wizard ... ma tramite codice

Come faccio a creare dei campi , da associare successivamente a dati scelti dall'utente.

----------------------------------
Metodo CaricaReport
Dim Report as New ReportDocument
Dim reportPath As String = percorso dove è situato il Crystal Report
Report.Load(reportPath)
Report.SetDataSource(dsFatture.Tables("Fatture Clienti"))
CRViewer.ReportSource = Report

Se non son stato chiaro, ditemelo ....

luxsor Profilo | Guru

Ciao Renato,
ci sono tuo modi:

- O al Crystal Report gli passi un dataset popolato con la tua query con tutti i filtri di ricerca ecc.

Dim table As New DataTable
adapter.Fill(table)

TuoReport.SetDataSource(table)

- O crei una connessione ad un datasource tramite crystal report e gli crei un comando (sarebbe la query) e gli passi i paramentri per effettuare il filtri sulla query


Fammi sapere

Rapox Profilo | Newbie

Allora il passaggio tramite dataset al Report c'è gia

Report.SetDataSource(dsFatture.Tables("Fatture Clienti"))

dsFatture è il DataSet, con relativa tabella.

Ora quando effettuo il deug, mi da un errore, dicendo che non esistono tabelle nel report.
Ma penso sia normale in quanto, nel Crystal Report (.rpt) non avevo messo campi.

Il mio problema ora è :

Ora che li ho inseriti manualmente, e quindi senza wizard tutti i campi del Report

Come faccio a collegare i vari parametri da me creati, con gli stessi parametri che vengono presi dal dataset ?

Esiste un modo per impostare i parametri, le righe del report da codice ?

luxsor Profilo | Guru

Usa questo:

Dim DBConn As SqlConnection
Dim Rep1 As New TuoReport
Dim SQL As String

SQL = "tua query”

Dim mySQLDbCommand As SqlCommand

DBConn = New SqlConnection(“stringa di connessione alla sorgente dati”)

DBConn.Open()

mySQLDbCommand = New SqlCommand(SQL, DBConn)

Dim adapter As SqlDataAdapter = New SqlDataAdapter()
adapter.SelectCommand = mySQLDbCommand

Dim table As New DataTable
adapter.Fill(table)

Rep1.SetDataSource(table)

Form1.CrystalReportViewer1.ReportSource = Rep1

Rapox Profilo | Newbie

Con il tuo codice, si va a fare una query sul db , si estrae i relativi campi interessati, e li si va a salvare nel DataTable.
Tutto questo, l'ho gia fatto

Mi serve solo capire come immettere i campi del DataTable o DataSet all'interno del Crystal Report.

Il DataSet pubblico del programma, a cui vengono passati i dati, dopo una relativa query non me lo vede

E quindi ho deciso di crearli direttamente io, ma cosi facendo non son collegati a nulla.

Mi scuso, per la poca comprensione

luxsor Profilo | Guru

>Mi serve solo capire come immettere i campi del DataTable o DataSet all'interno del Crystal Report.
In teoria dovresti avere in Esplora Campi una tabella contenenti tutti i campi inseriti nella query. Vi che così non è:
apri Explora Soluzione / Esperto Database apri la connessione con la sorgente dati, crea un comando (sarebbe la tua query) e fai applica.

Ora dovresti avere tutti i campi.

Rapox Profilo | Newbie

Provo e ti dico

Anche perchè l'unica prova che avevo fatto, prima di oggi, era la creazione di un DataSet da Esplora soluzioni... cosi me lo vedeva, ma mi ero fermato sul come dire al DataSet appena creato di andare a prendere i dati dall'altro realizzato da codice e caricato tramite query sul db

EDIT:
Niente, forse il problema dervia dal fatto che non ho collegato nessun db al Crystal Report.

luxsor Profilo | Guru

Se non gli passi una fonte di dati, non potrai inserire nel report quei campi.

Rapox Profilo | Newbie

Teoricamente la fonte dati dovrebbe essere il DataGridView dove vengono visualizzati i dati in base alle impostazioni di ricerca.

Solo che non vendendomi nessun campo del DataSet in Esperto DataBase, non riesco a fare nulla.

Se volessi Realizzare una Tabella all'interno del Report e passargli un DataSet ? sarebbe possibile ?

luxsor Profilo | Guru

Se hai già un Datagridview popolato, usa questo:

Report.SetDataSource(DGV.DataSource)

Se non riesco, allega un esempio del programma





Rapox Profilo | Newbie

Allora ho risolto il problema per cui avevo aperto questo thread.
Era dovuto principalmente alla sorgente dei dati che dovevo impostare al report, la formula qua sopra non mi andava, cosi ho collegato il report al BindingSource presente nel progetto, e che viene utilizzato per filtrare i dati :

NomeReportDocument.SetDataSource(NomeBindingSource.List)

Il REPORT è ora cosi strutturato :

- Intestazione Report : Statistiche di stampa
Richiamate dal form dove è anche presente il dgv tramite la formula che ho trovato in questo forum :

NomeReportDocument.DataDefinition.FormulaFields("Nome Campo Formula").Text = "'" + TextBox/Label + "'"

- Intestazione Pagina :

Logo - Dati

Nome Campi Db

- Dettagli : campi database

Funziona tutto perfettamente, in base alla sezione fatta da un ipotetico utente, mi vengono mostrati i campi inerenti nel report.

Ora, l'ultima cosa che non son riuscito a trovare, per completare il programma è questa

Se io ho i vari campi del db nel Report

Section 2 (Intestazione Pagina)
Codice Nome Cognome AnnoDiNascita CodiceFiscale
Section 3 (Dettagli)
1 Pippo pippo 1/1/1 rdiew873s9
2 pluto pluto 2/2/2 erqwq394ws
3 paperino paperino 3/3/3 sadf34sa

Ma voglio stampare due casi :

a) caso a , comune - stampa il report
b) caso b , l'utente vuole decidere quali campi stampare ( solo codice Nome Cognome) e nascondere i dati di tutti gli altri campi

Come posso fare ?

Grazie in anticipo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5