Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Crystal Reports e reportistica
Crystal e DataSet
giovedì 17 giugno 2004 - 17.22
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
gio 17 giu 2004 - 17:22
Mi sono creato un DataSet in VB.NET da programma. Ho associato il DataSet al SetDataSource di un oggetto di CrystalReport1. Ma ora come faccio a disegnare il report? Prima usavo dei file fisici in Access, mi creavo il report e lo associavo a CrystalReportViewer. Adesso volevo saltare un passaggio e dal DataSet creato in memoria passare direttamente alla stampa. Ma non riesco a capire come fare per disegnare il report.
Ciao, Paolo
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 17 giu 2004 - 17:42
ciao Paolo,
per disegnare i report devi avere dei tools tipo:
- vs.net
- crystal report
con questi crei il file ".rpt" che poi da codice carichi sul viewer mettendogli la sorgente che vuoi tu.
altrimenti non so se esistano tools alternativi per creare i file rpt.
Nel 1o caso (vs.net) ti basta aggiungere 1 report al progetto e poi con doppioClick si apre il reportdesigner , e da li lo fai...
ciao
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
gio 17 giu 2004 - 18:10
Quello che non capisco è come fare a disegnare il report in crystal se creo il dataset da sorgente. Ad esempio da sorgente mi creo il mio bel dataset con le mie tabelle legate, esempio:
_datPro.Clear()
_daaPro.Fill(_dasPro, TABGESPRO)
_datPro = _dasPro.Tables(TABGESPRO)
con ad esempio campo1 campo2 e campo3.
Come faccio a disegnare il report con crystal con i suddetti campi se fanno parte di un dataset in memoria?
Ho visto vari esempi che da un dataset creato da sorgente con le suddette istruzioni viene alimentato un report, ma il report come faccio a disegnarlo, ad esempio in crystal, se non ho un database fisico da cui partire?
PS scusate la mia ignoranza.
Grazie, Paolo.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 17 giu 2004 - 18:58
ciao,
prova a fare cosi:
- aggiungi 1 dataset al progetto (aggiungi nuovo elemento->dataset non [anche non tipizzato]), lo prepari con colonne/legami che vuoi visualizzare poi nel preport.
- aggiungi 1 report al progetto e gli dici a design time di prendersi come sorgente 1a classe del progetto (1a voce della 3view), dovrebbe darti quelolo che hai aggiunto prima.
- da codice lo crei etc.. con la stessa struttura che hai disegnato ma con dati che vuoi e lo metti come sorgente.
puo essere 1a soluzione ;-)
ciao
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
ven 18 giu 2004 - 09:47
Ciao Teo, mi sono bloccato alla 2^ istruzione:
Ho creato un dataset non tipizzato nella form ( se ho capito bene il dataset non tipizzato è generato a manina sul sorgente con tutte le istruzioni tipo 'dim mioDataSet as Dataset' etc... )
Poi ho aggiunto il report al progetto ( Casella Strumenti/CristaReportViewer ), mi ha aggiunto CrystalReport1.rpt nella soluzione, ho cliccato sopra 2 volte e mi ha presentato il design time del report (Intestazione, dettaglio, piè pagina etc...). A questo punto dovrei aggiungere come sorgente la 1a classe del progetto () Form1.vb? per vedere i campi esposti nel dataset della Form1, ma non capisco come: 1a voce della 3view?
Scusami ancora ma per me è una cosa nuova.
Ciao e grazie, Paolo.
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
ven 18 giu 2004 - 10:01
ciao Paolo,
per aggiungere il dataset non intendevo solo a codice ma che lo crei a design time.
Prova a fare tastoDX sopre il progetto->aggiungi e scelgi dataset , non tipizzato.
Nella 3view del progetto ci dovrebbe essere adesso anche il file ".xsd"
Quando hai il file lo editi e gli metti la struttura che poi vorresti nel report, e poi fai i passi di prima...
cmq non preoccuparti ,siamo qui per questo! ;-)
ciao
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
ven 18 giu 2004 - 10:52
Ciao Teo.
Al momento in dovrei visualizzare il report mi si espone una tabella con:
Collegamento al database
Nome tabella
Nome server
Database
Cosa mi manca?
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
ven 18 giu 2004 - 11:07
puoi settare la propieta datasource del report nella tua sorgente dati che hai caricato, oppure meglio ancora, cambi le logoninfo del report...
ma il report lo hai agganciato al dataset come dicevamo prima,o questo è 1altro report?
ciao
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
ven 18 giu 2004 - 11:53
Ciao Teo.
Forse sto facendo confusione.
Mi sono fatto un nuovo progetto con:
Un dataset.xsd con tre campi scritti a mano: tmp_uno, tmp_due e tmp_tre.
Ho aggiunto nel form un oggetto di CrystalReport1.rpt a cui ho abbinato il suddetto dataset.xsd.
Nella form ho aggiunto le seguenti istruzioni, presupponendo che si possa fare, e cioè una tabellina in memoria da riportare tanto su una griglia quanto su un report:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dclTab As DataColumn
Dim tabTmp As New DataTable("Tabella")
'Codice
dclTab = New DataColumn
dclTab.DataType = System.Type.GetType("System.String")
dclTab.ColumnName = "tmp_uno"
dclTab.Caption = "Codice"
dclTab.ReadOnly = False
dclTab.Unique = False
dclTab.MaxLength = 10
tabTmp.Columns.Add(dclTab)
'Descrizione
dclTab = New DataColumn
dclTab.DataType = System.Type.GetType("System.String")
dclTab.ColumnName = "tmp_due"
dclTab.Caption = "Descrizione"
dclTab.ReadOnly = False
dclTab.Unique = False
dclTab.MaxLength = 10
tabTmp.Columns.Add(dclTab)
'Via
dclTab = New DataColumn
dclTab.DataType = System.Type.GetType("System.String")
dclTab.ColumnName = "tmp_tre"
dclTab.Caption = "Via"
dclTab.ReadOnly = False
dclTab.Unique = False
dclTab.MaxLength = 10
tabTmp.Columns.Add(dclTab)
Dim x As DataRow = tabTmp.NewRow
x("tmp_uno") = "Uno"
x("tmp_due") = "Due"
x("tmp_tre") = "Tre"
tabTmp.Rows.Add(x)
Dim adaTmp As New SqlDataAdapter
Dim dasTmp As New DataSet
dasTmp = New DataSet
dasTmp.Tables.Add(tabTmp)
DataGrid1.DataSource = dasTmp
Dim crReportDocument As CrystalReport1
crReportDocument = New CrystalReport1
''Pass the populated dataset to the report
crReportDocument.SetDataSource(dasTmp)
''Set the viewer to the report object to be previewed.
CrystalReportViewer1.ReportSource = crReportDocument
End Sub
secks
Profilo
| Senior Member
442
messaggi | Data Invio:
lun 21 giu 2004 - 15:12
Ciao a tutti.
Dopo numerosi tentativi sono arrivato ad un risultato, un po' macchinoso ma funzionante.
Riepilogo: l'obiettivo è quello di avere la possibilità di stampare da un dataset o una tabella che creo a mio piacere il memoria, il cosidetti report disconnessi con Crystal. Questo perchè con le viste non ho ancora preso pratica e sono abituato ad estrarre i dati dai database alimentando una o più tabelline in memoria con tutti i dati necessari ( per le stampe o griglie ad esempio), se qualcuno ha qualche suggerimento alternativo sarei felice di ascoltarlo.
Di conseguenza a tutto ciò, in caso di stampe con molti dati il lavoro e il tempo impiegato era doppio, nel senso che prima mi creavo la tabella in memoria e poi la scrivevo in un database in access e poi alimentavo il report e, nel caso di stampe piuttosto corpose ...
Ora il nuovo metodo consiste nei seguenti passi: Alimento la mia solita tabellina in memoria con i relativi dati, allo stesso tempo creo in access la stessa tabellina che alimenterà il dataset.xsd ( tipizzato ) allegato al progetto. Al controllo CrystalReport lego la struttura dei dati del DataSet.xsd e da sorgente invece lo alimento con i dati della tabellina. Il tutto sembra funzionare anche se, mi ripeto, è un po' macchinoso, che però con qualche funzione pubblica renderò la cosa più automatizzata. Ho provato anche ad assegnare i campi da un file .ttx che però con vb.net non sono riuscito a far funzionare in quanto da errore sia utilizzando CreateFieldDefFile di P2smon.dll che direttamente il file.
Se qualcuno ha quache sistema migliore da consigliare ne sarò grato.
Ringrazio tutti, ciao Paolo.
Torna su
Stanze Forum
Elenco Threads
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 !