Campo calculado na Grid
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?
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
Curtidas 0
Respostas
Cabelo
13/07/2005
No evento OnCalcFields, voc~e deve atribuir os valores a este campo...
GOSTEI 0
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:
se quiser criar um label para mostrar o total faz assim:
espero ter ajudado...
se não funcionar me avise, pois não testei e se tiver algum erro deve ser coisa simples... :wink:
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
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?????
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
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.
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