[ SamSvojDžigibaja @ 19.01.2003. 11:51 ] @
Da li neko zna kako osvježiti agregatnu funkciju u datatableu pri brisanju row-a?
[ SamSvojDžigibaja @ 19.01.2003. 12:42 ] @
u .Net-u?
[ degojs @ 22.01.2003. 17:59 ] @
Mozemo li da vidimo malo koda?
[ SamSvojDžigibaja @ 23.01.2003. 19:25 ] @
Dolazi i kod:
Dim dtGlupaTabela As New DataTable()

Sub BasJeGlupOvajDataTable()
Dim KolonaZaUnos As New DataColumn("Kol", GetType(System.Double))
Dim SumKolona As New DataColumn("SumKol", GetType(System.Double), "sum(Kol)")
dtGlupaTabela.Columns.Add(KolonazaUnos)
dtGlupaTabela.Columns.Add(SumKolona)
Me.DataGrid1.DataSource = dtGlupaTabela
End Sub

Sub NistaOdOvogaNeRadi(ByVal EvoDaProbamoDelete As Boolean)
Dim RedZaBrisanje As DataRow
If EvoDaProbamoDelete Then
dtGlupaTabela.Rows(0).Delete()
Else
RedZaBrisanje = dtGlupaTabela.Rows(0)
End If

dtGlupaTabela.Rows.Remove(RedZaBrisanje)
dtGlupaTabela.Rows(0).EndEdit()
dtGlupaTabela.AcceptChanges()
End Sub

Sub AlNeLeziVraže(ByVal SamoNijeOvoElegantno As Boolean)
If SamoNijeOvoElegantno Then
dtGlupaTabela.Rows(0)(0) = dtGlupaTabela.Rows(0)(0)
End If
End Sub


Evo, ja bih ubacio u kolonu Kol rows(0)=2,rows(1)=2,rows(0)=3
I dobio u koloni SumKol=7
A kad izbiršem neki red da mi sam preracuna, a ne da moram napraviti ColimunChanged event u 'AlNeLeziVraže' sub-u.
Jel tražim puno od Micorsofta?

P.S.
Jel ko imao problema sa printanjem Crystal Reportsa ili novog Document objekta iz .Net-a na Win98
[ Deep|Blue @ 29.01.2003. 00:48 ] @
a da ne ocekujes mozda bil gejtsa da dojase na belom konju i sabere ti redove kad ti obrises neki???

sta tu sabiras?
imas dve kolone i sabiras vrednosti prve i ispisujes u drugoj?
jel nuzno to?
[ SamSvojDžigibaja @ 30.01.2003. 21:32 ] @
Ako želiš imati stavke u gridu i sumu u Text Boxu ispod, ovo je jednostavniji način od dodati relaciju, pa u master tabeli držati agregatnu funkciju.
[ degojs @ 06.02.2003. 06:24 ] @
Nije li svrha agregatnih funkcija upravo izbegavanje drzanja podataka ako se dobivaju pomocu istih iz postojecih podataka?
[ SamSvojDžigibaja @ 06.02.2003. 19:16 ] @
Stavke jednom zahvatim, stavim u data set, i korisnik vidi i stavke i sumu tih stavki. Sumu računa klijent, a ne na SQL server, sum funkcijiom iz dataseta , a ne sql sum funkcijom.
Po meni, glupo bi bilo opet zahvaćati isti skup podataka iz baze, sa diska, pa da mi sql računa sumu!?
[ degojs @ 07.02.2003. 18:36 ] @
Nemam vremena ovih dana nikako da se malo pozabavim tim (verovatno cu uspeti da uhvatim par sati preko vikenda ;) ali jesi li pokusao da koristis DataView?
[ degojs @ 08.02.2003. 16:54 ] @
Aha, ti hoces da se dinamicki menja suma. Pa kad dodas/izbrises/promenis neki row ti sam promeni vrednost textbox-a gde ispisujes sumu vrednosti.
[ SamSvojDžigibaja @ 09.02.2003. 12:42 ] @
Znam da mogu reći :
dim R as datarow, K as datatable, suma as currency
For each r in K.rows
suma +=r(0)
next r
textbox.text=Suma
ali onda 2X prelazim sve redove. Prvi put to radi sum funkcija.
Osim toga, ovo ima 4 reda koda a primjer koji sam naveo iznad ima samo jedan red.
Radi se o tome da DataSet ne sumira ponovo svoju funkciju na event delete . Na Add i Update on to radi. (Jer se desi ChangeColumn event)
On se može i vještački izazvati (vidi kod), (tako sam i uradio),ali moraš priznati nije neko genijalno riješenje (suma.text=suma.text) riješenje.
Samo sam se pitao da li je to neko riješio na pametniji način..
[ degojs @ 09.02.2003. 22:08 ] @
Pa ne moras da prolazis kroz sve zapise. Dovoljno je da samo jednom, na pocetku, dobijes sumu, a kasnije je samo povecavas/smanjujes kada korisnik vrsi izmene u nekom zapisu. Nesto poput (za update):

suma = suma - staraVrednost + novaVrednost

(naravno za delete akciju novaVrednost = 0, a za add akciju staraVrednost = 0), cime ces da izbegnes ponovni prolazak kroz sve zapise.

[ SamSvojDžigibaja @ 10.02.2003. 23:42 ] @
Stvar radi na ColumnChanged event odnostno za Add i Update akcije, ali ne i za Delete. Tako da sam ovo vještački izazvao row(0).DataColumn.Vrijednost=row(0).DataColumn.Vrijednost.
Samo sam se nadao da ima nekakav elegantni Refresh..
Hvala na trudu..