Report da query Sql

domenica 04 maggio 2008 - 16.19

skull_beta82 Profilo | Newbie

Ciao, dovrei realizzare un Report Connesso ad una query in SQL, sto facendo delle prove per verificare come si fa sono arrivato a questa soluzione:

DataTable tabella = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand("Select * from Linee", connection); adapter.Fill(tabella); ReportDocument report = new ReportDocument(); report.Load("Report/rptSdb.rpt"); report.SetDataSource(tabella); frmPreviewReport frm = new frmPreviewReport(report); frm.Show();

Quando creo il Report come data Source cosa devo settare? una classe con i comandi Get e Set va bene?
Come faccio ad accedere ai campi del DataTable?

Attendo vostre Grazie!

freeteo Profilo | Guru

ciao,
il codice che hai scritto va benissimo, il report lo devi creare agganciandolo al database che contiene la tabella "linee", usando la finestra "esperto Database" che si apre facendo tastoDX sopra alla treeview che vedi nella finestra "document outline", che si apre quando crei un report.

Se fai il report wizard, si apre anche in quel caso la maschera "esperto database", recuperabile ovviamente anche dal menu' "Crystal REport" che ti compare nella barra di visual studio quando hai un report aperto.

Da li puoi dargli un db, anche temporaneo, purche' abbia quella struttura di campi che hai nel datatable...se non ce l'hai puoi anche creati un mdb con quella struttura, tanto i dati glieli passi da codice e lui visualizzera' quelli.
Quello che è importante è dargli la struttura che lui riceverà, in modo da poter disegnare il report indipendentemente dai valori (infatti dentro ad un report definisci un "modello" che lui ripetera' per ogni riga che visualizzerà.

Nel tuo caso puoi dare tutta l'intera tabella dato che cmq farai "select *..., quindi ti basta fare la connessione ai dati nel report:

692x451 31Kb


Se invede devi fare una query custom, devi aggiungere un "Command" e scriverla:

564x393 83Kb


ciao.

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

skull_beta82 Profilo | Newbie

Ciao, grazie per la risposta, sempre molto chiaro e preciso. Volevo chiederti una cosa, come faccio a crearmi un Db fittizio per non collegare il report direttamente al Db? posso farlo tramite Visual Studio? Attendo tue notizie Grazie mille.

freeteo Profilo | Guru

>Ciao, grazie per la risposta, sempre molto chiaro e preciso.
>Volevo chiederti una cosa, come faccio a crearmi un Db fittizio
>per non collegare il report direttamente al Db?
no intendevo che il db fittizio era proprio un ".mdb" creato con Access e fatto con le colonne che ti servono (le stesse, dello stesso tipo e nello stesso ordine che gli passerai da codice) e agganci il report a quel db.
Dopo che hai creato il report per assurdo puoi anche cancellarlo...

ciao.

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

skull_beta82 Profilo | Newbie

Capito, quindi mi confermi che l'unico sistema per non legarlo ad BD principale è quello di collegarlo ad BD Access simile come struttura a quello della query che uso?

freeteo Profilo | Guru

>Capito, quindi mi confermi che l'unico sistema per non legarlo
>ad BD principale è quello di collegarlo ad BD Access simile come
>struttura a quello della query che uso?
si se vuoi fare presto e non hai una classe che ti gestisce l'entita da visualizzare sul report.
Se hai una classe che ti gestisce l'oggetto, puoi agganciare anche quella al report.
Ad esempio hai una classe "utente" che usi già per il tuo programma, e al report non gli passi una "dataTable" ma una " List<Utente> ", allora non ti serve il db, ti basta collegare al report l'entita (la trovi nel "esperto database" e ti compare automaticamente nel nodo ".net objects", attento che deve essere locale al progetto, se è una classe di un'altra libreria non la prende...)

Dal codice che avevi scritto tu pero', io ti ho consigliato il db, perchè gli passi un dataTable e quindi fai prima a fartelo in access.
Da dentro visual studio pero' non riesci a creare un db access, devi creartelo a mano...

Attenzione pero', che se dal tuo pc accedi al database, ti basta agganciare al report quello, senza farti file temp, vai dritto sul db.
A runtime invece i dati possono cambiare dato che glieli passi tu da codice ovviamente...ma il report va ugualmente.

ciao.

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

skull_beta82 Profilo | Newbie

Penso di usare il sistema del DB Access come mi hai consigliato prima. Grazie mille ;)
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