Campo calculado na Grid

Delphi

13/07/2005

Ola pessoal,

Tenho um DBGrid ligado a uma Query trazendo determinados registros e criei na Query um campo calculado. Dessa maneira:

CODIGO CLIENTE QTDE
1 Joao 3
2 maria 2

Onde o campo QTDE e´ a quantidade de vezes que este nome aparece na tabela de compras(esse campo e´ calculado ao iniciar o Form), mas ele fica vazio. A logica esta´ certa, mas nao aparece nada, o campo fica nulo. Como devo proceder?


Rafaaugusto

Rafaaugusto

Curtidas 0

Respostas

Cabelo

Cabelo

13/07/2005

No evento OnCalcFields, voc~e deve atribuir os valores a este campo...


GOSTEI 0
Paullsoftware

Paullsoftware

13/07/2005

cara é simples...

supondo que tenho os campos:
Valor(Float), Quantidade(Integer), SubTotal(Float):

mudo a propriedade [b:6626dd8a7e]FieldKing[/b:6626dd8a7e] o campo SubTotal para [i:6626dd8a7e]fkCalculated[/i:6626dd8a7e] e em seguida clique no seu compoente selecione a sua tabela em [b:6626dd8a7e]object inspector[/b:6626dd8a7e] vá para guia events e clique duas vezes sobre o evento [b:6626dd8a7e]OnCalcFields[/b:6626dd8a7e] daí faça assim:
Table1SubTotal.AsCurrency := Table1Valor.AsFlot * Table1Quantidade.AsInsteger;


se quiser criar um label para mostrar o total faz assim:

procedure TFormTotais.Total;
var
Total : Double;
begin
 Total := 0;
Table1.DisableControl;
Table1.First;
 While Not Table1.Eof do
  begin
  Total := Total + Table1.FieldByName(´SubTotal´).AsFloat;
  Table1.Next;
  end;
  Table1.EnableControls;
  Label1.Caption :=  ´R$ ´+FormatFloat(´#,,0.00´,Total);
End;


espero ter ajudado...
se não funcionar me avise, pois não testei e se tiver algum erro deve ser coisa simples... :wink:


GOSTEI 0
Rafaaugusto

Rafaaugusto

13/07/2005

Ok pessoal, agradeço a ajuda... Mas ainda não funcionou...

O detalhe é que os dados vem de outra tabela, dessa maneira...

CLI001
CLI002
CLI003
CLI001
CLI003
CLI001
...
Então deve ser feita a soma de qtas vezes apareceu cada cliente na Grid que obtem valores de uma outra tabela. Usando os itens acima ficaria assim:
COD | NOME | Compras
CLI001 João da Silva 1
CLI002 Manuel Joaquim 3
CLI003 Carlos Alberto 2
...
Como faço isso?????


GOSTEI 0
Cabelo

Cabelo

13/07/2005

Faz um select com um join usando um count para a quantidade de registros... não esqueça também de usar um Group by..


Se fizer assim, nem precisa de campo calculado.. manda dirto pro grid o campo do count do dataset

select COD , NOME, COUNT(COD) as D_COUNT from Tabela group by COD;

no grid você adiciona os campos, prceba que nem precisa de um calc field.


GOSTEI 0
POSTAR