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 reprot 11 e dati in datagrid
mercoledì 27 gennaio 2010 - 21.22
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
mer 27 gen 2010 - 21:22
Ciao a tutti vi espongo il mio problema:
Sto creando una piccola applicazione basata su visual basic e ado net, sostanzialmente il software non fa altro che interrogare un database access e restituire i risultati in una datagrid. Ora viene il bello, infatti mi piacerebbe poter stampare il contenuto della mia datagrid su un report creato in precedenza con crystal report 11 ma non so cosa mi sfugga non riesco a passare i dati della data grid al crystal report in fase di runtime.
Nel report in fase di design ho creato una crossTable con una query simile a quella che utilizzo per cercare i dati nel database ma in fase di runtime visualizzo i dati della query non i dati della data grid.
il codice da me usato è
report.SetDataSource(Form1.dtgrid.DataSource)
la data grid è in un altro form. Ho visto qualche altro esempio nel forum ma non riesco a farlo funzionare.
Se qualcuno potesse aiutarmi magari descrivendo non solo il codice ma il rpocedimento corretto per disegnare il report
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
mer 27 gen 2010 - 21:37
Ciao.
Con il metodo SetDataSource, devi passare l'istanza della dataTable(popolata con i dati), o del dataset, che sia perfettamente uguale, in termini di struttura, all'origine dati utilizzata per la progettazione del Report.
Facci sapere...
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
mer 27 gen 2010 - 22:18
non riesco a capire cosa si intende per struttura uguale. Non riesco a creare una tabella su crystal report con la struttura che desidero ho provato sia crosstable che group ma non riesco a capire come fare credo che il problema sia tutto qui
PS: Sto usando cristal report 11 professional
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
mer 27 gen 2010 - 22:27
Ciao.
Per la progettazione del Report hai usato un Dataset come origine dati?
Se si ..... e supponiamo che si chiami Dataset1 .... dovrai popolare un'istanza del Dataset1(che sarà anche il datasource del datagridView) e passarlo al report con il metodo SetDataSource.
Ad ogni modo..... Se mostri un pò di codice ci capiamo meglio.
Facci sapere....
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
mer 27 gen 2010 - 22:50
adesso ho cambiato il tipo di connessione in crystal sto utilizzando oledb ado, creando la tabella con la solita query contenente i campi visualizzati nella dtgrid nel momento di richiamare il report nel crystal report viewer ottengo un errore "Accesso non riuscito. Riprovare", premendo ok sulla finestra ottengo il report con i campi selezionati con la query statica data da crystal.
posto il codice da me utilizzato per aprire il report
Dim report As New ReportDocument
report.Load("Report1.rpt")
report.SetDataSource(Form1.dtgrid.DataSource)
CrystalReportViewer1.ReportSource = report
CrystalReportViewer1.RefreshReport()
vorrei aggiungere inoltre che la tabella nel report la creo selezionando add command e inserendo la query sql che genera i risulatati che in visual vengono visualizzati in una datagrid.
Il report l'ho disegnato con il wizard scegliendo new connection poi OLE DB ADO come stringa microsoft jet 4.0 e infine il file mdb contenete il database
nelle finestre successive ho lasciato tutto di default tranne il fatto che ho creato questo nuovo comando per creare questa tabella.
Spero di non aver tralasciato nulla.
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
mer 27 gen 2010 - 23:11
Ma per progettare il Report .... Hai usato un Dataset??? O hai usato una connesione "diretta" al database???
facci sapere...
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
mer 27 gen 2010 - 23:18
no penso sia una connessione diretta... mentre tu mi stavi rispondendo io stavo editando il messaggio
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
mer 27 gen 2010 - 23:34
Ma allora a che ti serve impostare a RunTime un Nuovo datasource?
Ti basta fare in modo che la tabella collegata al report contenga i dati filtrati secondo i tuoi criteri ... no?
C'è un motivo in particolare per cui devi/vuoi utilizzare il metodo SetDataSource?
facci sapere...
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 10:04
forse mi sono espresso male ciò che scrissi 2 post fa riguardava la procedura da me seguita non quello che vorrei fare. In sostanza io dovrei visualizzare in un report i dati provenienti da una datagrid di visual. i dati da me letti non vengono poi passati ad una tabella.
Non capisco come si fa a disegnare un report con un data set...
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 17:48
ciò che provo a fare è quello di assegnare come datasource del report una dataset che dovrebbe essere restituita da form1.dtgrid.datasource tengo presente che la griglia e il report sono dichiarati in due form differenti.
Il report l'ho costruito con una query e pensavo di riempirlo cambiando semplicemente da datasource del report stesso... mi sfugge qualcosa ma non riesco a capire questo "cosa"
AGGIORNAMENTO
Ho fatto una prova ho creato un nuovo form con una nuova datagrid se in questo nuovo oggetto voglio vedere le stesse cose che ci non nella datagrid nel form1 mi accorgo che se non setto il datamenber oltra al datasource non vedo nulla.
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
gio 28 gen 2010 - 20:21
Ciao.
Allora ... facciamo un pò di ordine.
La tua applicazione ha bisogno di visualizzare dei dati su di un datagridview e, gli stessi dati, visualizzarli anche nel report ..... giusto?
Il motivo per cui hai creato un report con un origine dati "connessa" è soltanto casuale .... giusto?
Se SI a tutte e 2 le domande ... vediamo di cambiare approccio.
Probabilmente dovrai riprogettare il tuo report usando, come origine dati, un Dataset tipizzato creato a Design-Time .... ma mi servirebbe capire se sei in grado di farlo tu o se ti devo mandare un progettino di esempio.
Facci sapere....
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 20:29
ok perfetto devo fare un data set perchè hai centrato il problema. Purtroppo so creare questo dataset a dire la verità non so neanche cosa sia sulla piattaforma net mi sono ritrovato tutte queste nuove strutture per la gestione dei dati e mi sono confuso un pò.
Si la connessione al database nel report è casuale l'ho fatta perchè ho letto in un forum che bisognava creare il report con la tabella strutturata come la datagrid
Ricordo che ul database è access
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
gio 28 gen 2010 - 20:39
Se hai pazienza .... entro domani notte ti posto un progettino di esempio .... prima non posso perchè sono un pò indietro con il lavoro.
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 20:45
va bene ti ringrazio del tempo che m istai dedicando io vedo se riesco a trovare qualcosa online nel caso affermativo ti mando un post così da non farti perdere tempo inutile
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 21:42
allora ho fatto dei progressi e sono riuscito nel mio intento al 90%, ti spiego meglio sono riuscito a creare questo benedetto dataset tipizzato tramite menu di visual studio ho importato le tabelle che mi servono e creato questo dataset. Poi ho ricreato il report dando come origine dati proprio il data set.
Ho creato il report con i campi che voglio visualizzare non ho usato nessun ragguppamento e nessun filtro ora popolando il report con la solita stringa
report.SetDataSource(form1.dtgrid.DataSource) e finalmente funziona anche se mi sono accorto che il campo data ordine non viene visualizzato rimane vuoto premetto che i primi 4 campi visualizzati sono presi da una tabella che chiameremo tabella1 e il campo data viene estratto con un join da un altra tabella che chiameremo tabella 2.
Premetto che ho passato alla datagrid come dataMember solo tabella1, ma nonostante ciò nella datagrid visualizzo tutti i campi.
Cosa avrei sbagliato?
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
gio 28 gen 2010 - 21:53
Hai sicuramente sbagliato la struttura del dataset associato al Report .....
Il Dataset(origine dati del Report) deve essere tipizzato a modi "vista" ..... provo a spiegarmi meglio.
Tabella1
Campo1_1 Campo2_1 Campo3_1
Tabella2
Campo1_2 Campo2_2
Per visualizzare tutti i campi .... la struttura del Dataset associato al report dovrà essere una datatable contente i campi:
Campo1_1 Campo2_1 Campo3_1 Campo1_2 Campo2_2
oppure, se vuoi mantenere la stessa struttura del Db(quindi 2 datatable differenti) .... dovrai preoccuparti di popolare le due datatable ed utilizzare un sottoreport come filtro dei dati.
Spiegato così .... potrebbe essere difficile da comprendere, pertanto rinnovo la mia disponibilità a prepararti un esempio entro domani.
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 21:58
finche non scrivo che risolvo la 100% tu se puoi compatibilmente con i tuoi impegni fai il progetot di esempio, quindi se ho capito il dataset lo devo creare sulla base di una query... vediamo se riesco a sistemare da solo
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
gio 28 gen 2010 - 22:05
>il dataset lo devo creare sulla base di una query
NO!
Devi dimenticare per un attimo la struttura delle tabelle del Db ..... dimentica!
Crea un dataset tipizzato con una singola DataTable che contenga i campi che ti servono per costruire il Report (ricorda di dimenticare la struttura delle tabelle del Db).
Popola quel dataset con i dati provenienti dal Db e passa quel dataset con il metodo setDataSource al Report.
Fatto questo .... se funziona .... puoi complicarti un pò le cose, se preferisci, usando lo stesso DataSet(se sei solito farlo) che usi come contenitore dati disconesso per la gestione dei dati per l'intera applicazione.
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 23:06
ho creato il dataset chiamato table1 ma non capisco come popolarlo con i risultati della datagrid
il dataset l'ho creato tramite editor di visual studio e tramite query ho forse sbaglaito? se ti faccio perdere troppo tempo lascia stare aspetto domani
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
gio 28 gen 2010 - 23:36
Non è questione di perdere o meno tempo .... quando rispondo, lo faccio perchè mi va di farlo
.
E' questione di capirsi o meno .... lavorando su qualcosa di "comune" forse ci si capisce meglio....non credi?
A domani.
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
gio 28 gen 2010 - 23:39
sicuramente ok a domani
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
ven 29 gen 2010 - 14:16
Ciao finalmente stamattina a mente lucida ho capito il dafarsi...Allora ho costruito un nuovo dataset DataSet1 dove ho costruito una nuova dataTable chiamata ROR_ Qui ho aggiunto le 5 colonne che mi servivano, successivamente ho popolato il mio dataset con una query e un oledbdataadapter e passato in dataset alla griglia, successivamente ho passato il datasource della griglia al report e funziona correttamente.
L'unico problema rimasto è che eseguendo una nuova ricerca il dataset accoda i nuovi dati a quelli già presenti, a tal proposito volevo chiederti se esistesse un metodo che svuota il dataset.
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
ven 29 gen 2010 - 14:20
risolto con il metodo clear() comunque se potesimo parlarne meglio di questa tecnica del dataset mi piacerebbe poter approfondire l'argomento
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
ven 29 gen 2010 - 20:05
Complimenti per lo spirito .... non hai aspettato che qualcuno risolvesse il problema al posto tuo!
Per il resto .... chiedi pure.
Se quello di cui hai bisogno informazioni non c'entra nulla con il titolo del thread, sarebbe meglio che ne aprissi un'altro.
Facci sapere...
Ciao
giovy87
Profilo
| Newbie
20
messaggi | Data Invio:
ven 29 gen 2010 - 21:16
si ok devo mettere qualcosa per indicare che ho risolto?
Jeremy
Profilo
| Guru
1.527
messaggi | Data Invio:
ven 29 gen 2010 - 23:25
Se ritieni utili i suggerimenti che ti ho dato puoi accettare una delle mie risposte .... verrà sovraposto un flag verde sul titolo del thread per indicare che il problema è stato risolto.
Ciao.
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 !