Hoi,
Ik heb een Datasnap (multi-tier, COM over TCP/IP getunneld) applicatie. Daarbij heb ik een probleem waar ik niet uit kom:
Een Aggregate gedefineerd op een ClientDataSet met GroupingLevel 1 die gebruikt maakt van een locale IndexDef waar het GroupingLevel is gezet op 4 levert geen resultaat op. Als de Aggregate gezet wordt op 0 (dus alle data in de ClientDataSet) werkt de Aggregate wel.
Voordat ik over ga met wat ik al geprobeerd heb, zal ik eerst de situatie schetsen die ik wil bereiken;
Ik heb in een grid een overzicht staan van een maand aan uren gesorteerd per dag.
Boven het grid staan een aantal totalen over de gehele maand. Ik wil nu ook de totalen van de huidige dag boven het grid zichtbaar maken. Dit is dus afhankelijk van het huidige geselecteerde record in de grid.
Ik wil dit bereiken d.m.v. een Aggregate, deze gebruik ik ook al voor de totalen van de gehele grid.
De DataSetProvider, aan de serverside, exporteert een tabel waar een select op datum aan vooraf gaat. De tabel bevat de volgende (voor hier relevante) kolommen: DATUM, RELATIE_CODE, PROJECT_CODE, WERK_UREN.
De index die gedefineerd is heeft de volgende parameters (uit de .dfm):
De aggregate heeft de volgende parameters (wederom uit de .dfm):
De code in de OnUpdate is de volgende:
Als de GroupingLevel in de Aggregate op 0 gezet wordt dan laat hij keurig netjes het totaal van de werkuren van de maand zien.
Als ik de index aanpas zodat hij anders sorteert zie je dit ook veranderen in het grid.
De index werkt dus volgens mij wel maar houdt geen grouping informatie vast. Terwijl ixNonMaintained toch op false staat (wat volgens het manual ook niet op true mag) en het GroupingLevel gezet is (wat voldoende moet zijn volgens het manual).
Ik heb ook al geprobeerd om de GroupingLevel van de Index gelijk te maken aan de GroupingLevel van de Aggregate, dit leverde echter ook niets op. (Anders had je nu geen topic van mij gelezen
)
Ik kon niets anders meer verzinnen om te proberen (en heb alle hoofdstukken uit de Developers Guide gelezen) en hoopte dat hier iemand zijn licht er over wil schijnen.
Alvast bedankt!
Ik heb een Datasnap (multi-tier, COM over TCP/IP getunneld) applicatie. Daarbij heb ik een probleem waar ik niet uit kom:
Een Aggregate gedefineerd op een ClientDataSet met GroupingLevel 1 die gebruikt maakt van een locale IndexDef waar het GroupingLevel is gezet op 4 levert geen resultaat op. Als de Aggregate gezet wordt op 0 (dus alle data in de ClientDataSet) werkt de Aggregate wel.
Voordat ik over ga met wat ik al geprobeerd heb, zal ik eerst de situatie schetsen die ik wil bereiken;
Ik heb in een grid een overzicht staan van een maand aan uren gesorteerd per dag.
Boven het grid staan een aantal totalen over de gehele maand. Ik wil nu ook de totalen van de huidige dag boven het grid zichtbaar maken. Dit is dus afhankelijk van het huidige geselecteerde record in de grid.
Ik wil dit bereiken d.m.v. een Aggregate, deze gebruik ik ook al voor de totalen van de gehele grid.
De DataSetProvider, aan de serverside, exporteert een tabel waar een select op datum aan vooraf gaat. De tabel bevat de volgende (voor hier relevante) kolommen: DATUM, RELATIE_CODE, PROJECT_CODE, WERK_UREN.
De index die gedefineerd is heeft de volgende parameters (uit de .dfm):
code:
1
2
3
4
5
6
| IndexDefs = <
item
Name = 'idxDatum'
Fields = 'DATUM;RELATIE_CODE;PROJECT_CODE;WERK_UREN'
GroupingLevel = 4
end> |
De aggregate heeft de volgende parameters (wederom uit de .dfm):
code:
1
2
3
4
5
6
7
8
9
| item
Active = True
AggregateName = 'Vandaag gewerkt'
Expression = 'count(WERK_UREN)'
GroupingLevel = 1
IndexName = 'idxDatum'
Visible = False
OnUpdate = CDSUrenMedewerkerAggregates7Update
end |
De code in de OnUpdate is de volgende:
code:
1
2
3
4
5
6
7
8
| procedure TfrmUren.CDSUrenMedewerkerAggregates7Update(Agg: TAggregate);
begin
try
edUrenGewerktVandaag.Text := FormatFloat('0.#',Agg.Value);
except
edUrenGewerktVandaag.Text := '0';
end;
end; |
Als de GroupingLevel in de Aggregate op 0 gezet wordt dan laat hij keurig netjes het totaal van de werkuren van de maand zien.
Als ik de index aanpas zodat hij anders sorteert zie je dit ook veranderen in het grid.
De index werkt dus volgens mij wel maar houdt geen grouping informatie vast. Terwijl ixNonMaintained toch op false staat (wat volgens het manual ook niet op true mag) en het GroupingLevel gezet is (wat voldoende moet zijn volgens het manual).
Ik heb ook al geprobeerd om de GroupingLevel van de Index gelijk te maken aan de GroupingLevel van de Aggregate, dit leverde echter ook niets op. (Anders had je nu geen topic van mij gelezen
Ik kon niets anders meer verzinnen om te proberen (en heb alle hoofdstukken uit de Developers Guide gelezen) en hoopte dat hier iemand zijn licht er over wil schijnen.
Alvast bedankt!