Select distinct o group by su datatable

lunedì 18 luglio 2005 - 17.44

temerario Profilo | Junior Member

Ho il problema di trovarmi con un datatable e dover effettuare su di questo un group by per sommare determinati valori in base ad un codice.

Leggendo in giro molti spiegano che conviene a livello di select iniziale di impostarla in modo tale da non trovarsi in questa situazione ma nel mio caso la datatable non vieni popolata da una select bensì da inserimenti di articoli (parlando di un ordine al cliente) e solo alla fine quando decido cheè tutto ok inserisco nel DB.
Quindi a questo punto al click del pulsante dovrebbe fare i controlli di cui parlavo prima sui dati del datatable e poi effettuare l'insert.

Come posso risolvere questo problema? Qualcuno riesce a consigliarmi?

Ciao a tutti.

Cteniza Profilo | Guru

>Ho il problema di trovarmi con un datatable e dover effettuare
>su di questo un group by per sommare determinati valori in base
>ad un codice.

Ok

>Leggendo in giro molti spiegano che conviene a livello di select
>iniziale di impostarla in modo tale da non trovarsi in questa
>situazione ma nel mio caso la datatable non vieni popolata da
>una select bensì da inserimenti di articoli (parlando di un ordine
>al cliente) e solo alla fine quando decido cheè tutto ok inserisco
>nel DB.
>Quindi a questo punto al click del pulsante dovrebbe fare i controlli
>di cui parlavo prima sui dati del datatable e poi effettuare
>l'insert.

E qui non capisco normalmente quello che chiedi si risolverebbe con un:
Select Codice, Sum(quantita) from Tabella Group by Codice

Oppure dettaglia meglio i dati che hai in input e che cosa vuoi ottenere!


temerario Profilo | Junior Member

il mio problema che il group by per poter fare una SUM lo devo fare su una datatable e non sul db.

Cteniza Profilo | Guru

Prova questo articolo.
E' per C#, se hai qualche problema per tradurlo o per implementarlo su vb.net fai un fischio.
HOW TO: Implement a DataSet GROUP BY Helper Class in Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;en-us;326145

temerario Profilo | Junior Member

Non esiste un metodo più semplice? Mi sto trovando in difficoltà :(

temerario Profilo | Junior Member

Ho creato ed usato questa classe per poter fare un groupby su un datatable ma non riesco a capire non mi funziona.
Nel senso che se utilizzo l'esempio di chiamata nell'articolo scritto in MSDN va bene...quindi mi dovrebbe garantire il funzionamente della mia classe.
A questo punto penso che il problema sia nella mia chiamata.
Il codice è il seguente:

Dim ds As New DataSet
Dim dsHelper As DataSetHelper.DataSetHelper
Dim dt As DataTable = CType(Session("dt"), DataTable)
dt.TableName = "Imballo"
ds.Tables.Add(dt)

dsHelper = New DataSetHelper.DataSetHelper(ds)
dsHelper.SelectGroupByInto("ImballoSum", ds.Tables("Imballo"), "cimballo, SUM(quantitabox) quantita", "", "cimballo")

ma nella nuova datatable mi ritrovo la stessa tabella d'origine con i seguenti dati

cimballo quantita
9 10
9 5
Effettivamente questo mi serve in quanto se la somma delle quantita di uno stesso codice imballo non è un multiplo di un dato che reperisco nel DB devo effettuare delle operazioni.
Quindi il mio problema è che la datatbles ImballoSum ha gli stessi dati di Imballo e non i dati aggregati. COme mai?

babbubba Profilo | Senior Member

Hai risolto alla fine? Hai provato con una dataview?
Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.

selltest4pass Profilo | Newbie

how to pass 1z0-204 exam dumps
Test4pass: Leading the way in studying IT certifications. Best Practice, Guaranteed Certify! It can

help you pass you exams .you can search "test4pass 1z0-204 "by Google.

http://www.test4pass.com/1z0-204-exam.html
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