[vb.net] Mi aiutate col mio primo report?

martedì 04 maggio 2010 - 15.45

Frykky Profilo | Newbie

Salve a tutti,
ho un programma in vb.net che interagisce con un database e adesso mi trovo a dover stampare il risultato di qualche query.
Ho un form dove da 3 caselle di controllo seleziono anno, mese e giorno e vengono restituiti dati come "numero chiamate", "n° andate a buon fine", "numero falllite" etc...
Ho fatto con visual studio il mio Report con tutte le caselle di testo che vorrei fossero riempite coi dati di cui sopra.
Ma come si fa?

Davvero non l'ho ancora capito.

Mi aiutate?

freeteo Profilo | Guru

Ciao,
guarda questi link, si parla proprio di questo:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=9659
http://blogs.dotnethell.it/freeteo/SqlReporting-report-dinamici-con-gruppo-dinamico__15746.aspx
http://blogs.dotnethell.it/freeteo/SqlReporting-Stampe-Orizzontali-tipicamente-etichette__13062.aspx

e poi il raccoglitore di esempi per eccellenza:
http://www.gotreportviewer.com

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Frykky Profilo | Newbie

Ma non ho capito una cosa, per fare un report devo per forza usare il wizard (con stringa di connessione, tabelle etcetc.) che mi crei un dataset?
e se cambia la stringa di connessione devo rifare tutto oppure serve definirla solo la primavolta?


edit:
comunque grazie al primo link son riuscito a visualizzare il report in un reportviewer (ed è igà un grande passo :D) ma adesso ancora non ho capito come faccio a scrivere i vari totali nelle varie caselle di testo

freeteo Profilo | Guru

>e se cambia la stringa di connessione devo rifare tutto oppure
>serve definirla solo la primavolta?
no allora quello che tu fai è disegnarlo, e qui serve la connessione perchè lui va a vedere la struttura dei campi, tipi etc...ma poi a runtime gli puoi passare i dati che vuoi, caricati da dove vuoi (per assurdo anche da un file di testo) tramite codice .net standard, l'importante è che abbiano la stessa struttura.

Questi esempi li vedi dai link che ti ho messo, dove trovi anche degli esempi scaricabili.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Frykky Profilo | Newbie

intanto ti ringrazio perchè son riuscito almeno a visualizzare qualcosa. Adesso ho capito come funziona la "filosofia" dei report.

Però sto sbattendo la testa e non capisco come fare per stampare quello che voglio io.

questo è un facsimile....


666x411 19Kb


che poi non è altro che questo

476x428 57Kb


che faccio tramite lo stesso dataset e una datatable a lui collegato (metodo Select della datatable dt.Select("Stato='AB'").Length.ToString etc....)


freeteo Profilo | Guru

Ciao,
forse facciamo prima, se mi posti un esempio di programma con la maschera che vuoi, con un database che abbia dentro dati fittizi, e vedo di farti io il report.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Frykky Profilo | Newbie

sei un grande!
ti allego uno pseuodo progetto ampiamente modificabile se ritieni che ci siano soluzioni migliori per quello che devi fare.
Ti ho allegato anche un file sql per la creazione della tabella "sessioni"!

FAmmi sapere di cosa altro hai bisogno

ancora grazie!

freeteo Profilo | Guru

Ciao,
il pacchetto che mi hai dato non funziona perchè manca il db, lo script fa solo una tabella ma poi ne servono altre per provare (tipo ASL che è in join) e poi mancano anche i dati.

Cmq ho visto che metti dei valori "calcolati a mano" sulla maschera rispetto a quello che ti viene restituito dalla query, quindi direi che facciamo prima a fare un report che punta ad un db, dove ogni colonna è relativa alla textBox che hai nella Form:
1) fai un report dandogli in pasto una sorgente dati che abbia le colonne uguali alle textbox (come nome)
Se vuoi puoi farti un database temporaneo giusto per disegnarlo, altrimenti puoi fare una query fittizia:
SELECT 0 as TotaleRichieste, 0 as RichiesteBuonFine, 0 as Abort ... FROM ...
in modo da avere disponibili tutti campi che ti servono di tipo numerico.
Disegni poi il report che rispecchi quello che hai nella maschera, o come vuoi tu insomma, trascinando i campi dentro nel corpo.

2) da codice riempi una datatable con dentro i valori presi dalle textbox:
'--- rimepio i dati in memoria Dim table As New DataTable() table.Columns.Add("TotaleRichieste", GetType(Integer)) table.Columns.Add("RichiesteBuonFine", GetType(Integer)) table.Columns.Add("Abort", GetType(Integer)) Dim riga As DataRow = table.NewRow() riga("TotaleRichieste") = txtTotaleRichieste.Text riga("RichiesteBuonFine") = txtRichiesteBuonFine.Text riga("Abort") = txtAbort.Text .....


3) gli passi questa datatable al report e lo visualizzi:
'--- visualizzo il report Dim report As LocalReport = reportViewer1.LocalReport report.ReportPath = "report.rdlc" report.DataSources.Add(New ReportDataSource("nome", table)) reportViewer1.RefreshReport() ....

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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