Fórum Problemas para somar coluna de um dbgrid #380946
07/07/2010
0
Cleberson Santos
Curtir tópico
+ 0Posts
08/07/2010
Emerson Nascimento
select sum(TOTAL_FRETE) from tb_d_faturamento
where ID_FATURAMENTO=:codigo INTO :soma;
update tb_d_faturamento set TOTAL_FATURAMENTO=:soma
where ID_FATURAMENTO=:CODIGO;
end
analisando a stored procedure, creio que não há soma a fazer mesmo.
pelo que eu entendi acontecerá o seguinte, tento em mente os seguintes registros, E SUPONDO QUE ID_FATURAMENTO seja primary key:
tb_d_faturamento
----------------
id_faturamento total_frete total_faturamento
1 25.00 0
2 14.00 0
3 145.80 0
4 67.32 0
o que está sendo feito na stored procedure?
ela soma a coluna total_frete e coloca o valor na coluna total_faturamento. imagine que eu passei como codigo o valor 3
a variável soma receberá o valor 145.80 (porque você está mandando somar somente 1 registro, o de id_faturamento=3)
depois a SP pega esse valor obtido e coloca na coluna total_faturamento.
era melhor fazer somente:
update tb_d_faturamento set TOTAL_FATURAMENTO = TOTAL_FRETE
where ID_FATURAMENTO=:CODIGO;
se você publicar a estrutura da sua tabela talvez possamos dar uma melhor solução.
para obter o resultado desejado talvez devam ser necessárias outras tabelas ou ainda utilizar outro campo no filtro, que não o id_faturamento.
Gostei + 0
08/07/2010
Cleberson Santos
Gostei + 0
08/07/2010
Emerson Nascimento
begin
select sum(TOTAL_FRETE) from tb_d_faturamento
where ID_FATURAMENTO=:codigo INTO :soma;
update tb_faturamento set TOTAL_FATURAMENTO=:soma
where ID_FATURAMENTO=:CODIGO;
end
Gostei + 0
08/07/2010
Cleberson Santos
Gostei + 0
08/07/2010
Cleberson Santos
PROCEDURE TF_FATURAMENTO.SOMA_FATURAMENTO;
BEGIN
DM_PRINCIPAL.IBSP_SOMA_FATURAMENTO.Params.ParamByName('CODIGO').Value:=DM_PRINCIPAL.IBQ_C_FATURAMENTOID_FATURAMENTO.Value;
DM_PRINCIPAL.IBSP_SOMA_FATURAMENTO.ExecProc;
END;
e no evento ONCALCFIELDS da query eu chamo a procedure:
procedure TDM_PRINCIPAL.IBQ_D_FATURAMENTOCalcFields(DataSet: TDataSet);
begin
F_FATURAMENTO.SOMA_FATURAMENTO;
end;
Gostei + 0
09/07/2010
Emerson Nascimento
para criar o campo aggregate, vá em Fields Editor > New Field > Aggregate e, na propriedade expression desse novo campo, digite sum(campo_a_ser_somado). no seu caso, ficaria sum(total_frete).
daí basta colocar um dbtext ligado ao campo para exibir o resultado.
lembre-se que o campo aggregate não é um campo físico.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)