ClientDataSet - criando aggregates em runtime

Top  Previous  Next

// para este exemplo eu criei um client com 3 campos GRUPO, SUBGRUPO e NOME

// um indice INDICE pelos 3 campos nesta mesma ordem

// e quando clicado no BitBtn1 o client já está criado e ativo

 

var

  Grupo, SubGrupo: TAggregate;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  Grupo               := TAggregate.Create(Tb.Aggregates, Tb);

  Grupo.AggregateName := 'agrupo';

  Grupo.Expression    := 'count(grupo)';

  Grupo.Active        := False;

  Grupo.GroupingLevel := 1;

  Grupo.IndexName     := 'indice';

 

  SubGrupo               := TAggregate.Create(Tb.Aggregates, Tb);

  SubGrupo.AggregateName := 'asubgrupo';

  SubGrupo.Expression    := 'count(subgrupo)';

  SubGrupo.Active        := False;

  SubGrupo.GroupingLevel := 2;

  SubGrupo.IndexName     := 'indice';

 

  Grupo.Active           := True;

  SubGrupo.Active        := True;

  Tb.AggregatesActive    := True;

end;

 

// exibir valor dos agregados

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

  Caption := Grupo.Value + '   -   ' + SubGrupo.Value;

end;

 

end.