[Imbranato cerca aiuto] Fare un report con un datagrid

mercoledì 27 luglio 2005 - 11.04

bubuz Profilo | Newbie

Ciao a tutti,
sono nuovo con asp.net e sto imparando. Mi chiedevo se qualcuno ma sa dare qualche consiglio su come fare un report con asp.net.

Il problema è il seguente: (spero di descriverlo chiaramente)

devo costruire un report consultabile via web proveniente da 4 tabelle fatte in sql server fatte così:

tab1:
codiceA
DescrCodiceA

tab2
codiceA
codiceB
DescrCodiceB

tab3
codiceA
codiceB
codiceC
DescrCodiceC

tab4
codiceA
codiceB
codiceC
cifra1
cifra2

io devo fare un report coi totali (somma su cifra1 e cifra2) per codice (A B e C)

dovrei inscatolare il risultato in una tabella più o meno così:

codiceA codiceB codiceC cifra1 cifra2
01 01 01 2500 3000
01 01 03 500 -200
...
01 01 tutti 10000 90000
01 02 01 ....
...
01 tutti tutti 30000 ...
02 01 ....
tutti tutti tutti 473673 4337

Facendo una select con group della tabella 4 riesco ad avere i totali per cifra 1 e 2. Ma come faccio i parziali?
Ho fato una DataAdapter che fa questa query e l'ho iserito in un dataset e ho poi collegato un datagrid. ma come faccio i parziali?

Ringrazio in anticipo per ogni suggerimento

freeteo Profilo | Guru

ciao,
per fare quello che ti serve basta che ti fai 1a buona left join come query in modo da avere tutti i campi da dare al report (con valori dei "padri-figli").
Cosi' avrai 1a serie di colonne con valori duplicati ma a te non ti interessa perche qui entra in gioco il report:
dentro al report raggruppi in piu sottolivelli per i campi che ti interessano :
- codiceA poi dentro
- - raggruppi per codiceB e dentro
- - - raggruppi per codiceC
poi fai dal menu' inserisci subtotale,e lui te li calcola scioltissimo...il punto è creare 1 resultset della query che sia giusto per il report poi puoi' fare praticamente quello che vuoi!!!

ovviamente poi devi caricare il report nella pagina,dargli la sorgente dati etc....pero' poi vai via tranquillo!

W i report!!!!

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

bubuz Profilo | Newbie

>ciao,

Anzitutto grazie per aver risposto.

>per fare quello che ti serve basta che ti fai 1a buona left join
>come query in modo da avere tutti i campi da dare al report (con
>valori dei "padri-figli").
a parte la relazione padri-filgli che non so come definire, credo di averlo fatto; ho usato un data adapter e ho messo il risultato in un dataset.

>Cosi' avrai 1a serie di colonne con valori duplicati ma a te

Mi sa che non ho fatto la query come dici tu perché non mi vengono le colonne coi vlaori duplicati

>non ti interessa perche qui entra in gioco il report:
>dentro al report raggruppi in piu sottolivelli per i campi che
>ti interessano :

Ma i gruppi li devo fare nell'sql ( group by ...) ho in qualche modo a me ingoto nel datagrid?

>- codiceA poi dentro
>- - raggruppi per codiceB e dentro
>- - - raggruppi per codiceC
>poi fai dal menu' inserisci subtotale,e lui te li calcola scioltissimo...il

Che menu? Dov'è 'subtotale'?

>punto è creare 1 resultset della query che sia giusto per il
>report poi puoi' fare praticamente quello che vuoi!!!
>ovviamente poi devi caricare il report nella pagina,dargli la
>sorgente dati etc....pero' poi vai via tranquillo!
>
>W i report!!!!
>
>Matteo Raumer
>.net addicted :-)
>http://blogs.dotnethell.it/freeteo

MB

freeteo Profilo | Guru

ciao
ok sono stato 1po frettoloso nella spiegazione cmq intendevoche metti in join le tabelle in modo da avere come resultset di 1a query tipo:

SELECT tab2.*, tab1.*
FROM tab2 INNER JOIN tab1 ON tab2.codiceA = tab1.codiceA;

in modo da avere come resultset 1a serie di valori di codiceA (per eempio) duplicati nelle righe.

Qui si ferma la parte di accesso ai dati diciamo ovvero query sql.

Poi questa stessa query costrusci 1 report di crystal (aggiungendolo come elemento al tuo progetto) e gli dai la stessa query sul tuo db.
Dopodiche sei apposto nel senso che fai tutto con i campi del report chiamati "subtotale".
Ti ho allegato 1report d'esempio e 1 db in access con dentro 2 dati di prova.
Ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

bubuz Profilo | Newbie

Ok; credo di esserci riuscito, anche se non dovevo utilizzare un report di crystal report ma un datagrid.

Ho aggiunto al progetto il file rpt. Come lo visualizzo? Quando faccio partire l'applicazione mi dice che non riesce a scaricare il file rpt.

MB

freeteo Profilo | Guru

ciao,
ok io cercavo di portarti verso l'utilizzo del report perche quando porti i dati li dentro rieci a fare veramente quello che vuoi con i dati (proprio tutto no ma gran parte diciamo ;-)
Cmq basta che aggiungi 1 report al tuo progetto e metti nella pagina 1 reportviewer che sara' apppunto quello che poi te lo renderizza in html.

PS:
Mi è venuto in mente cmq che se usi il metodo "Compute" dell'oggetto datacolum di 1a datatable puoi anche fare li dei subtotali pero' hai dei valori che devi mettere giu in qualche posto (tipo aggiungere 1a riga al datatable con i valori) etc.. ma diventa 1po laborioso...
cmq puoi dare ancke 1 occhiata qui:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatadatatableclasscomputetopic.asp

altrimenti se usi qualche oggetto gerarchico tipo quelli che trovi cercando con google:
http://www.google.it/search?num=100&hl=it&newwindow=1&q=asp.net+hierarchical+datagrid&btnG=Cerca&meta=

ciao

Matteo Raumer
.net addicted :-)
http://blogs.dotnethell.it/freeteo

bubuz Profilo | Newbie

Ora sono arrivato ad avere un datagrid come volevo. Mi mancano i subtotali.
Posso scorrere il datagrid percando i valori da sommare facendo qualcosa tipo:

ciclo
calcolo i subtotali per la categoria 2
totale2 += converto in numero( datagrid.items.item(i).cells(3).text)
fine ciclo

ora ho una variabile che contiene il totale per il primo valore della categira 2
prima che che cambi valore dovre inserire una riga nel datagrid e aggiungere il valore trovato.
come si fa? io riesco a farlo nel dataset, ma non nel datagrid!

MB
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