Ir para conteúdo
Fórum Script Brasil
  • 0

Somatória


Guest Vitor Eduardo

Pergunta

Guest Vitor Eduardo

Olá, bom dia

tenho uma cds com a seguinte estrutura:

idifl - Integer

debitoifl - float

creditoifl - float

saldoifl - float

Eu gostaria de criar dois campos para armazenar a somatória dos campos debito e credito, com os quais usaria para calcular o saldo. Estes cálculos, soma do campo, e cálculo do saldo seriam efetuados toda vez que o usuário adicionar um registro na cds. Para tornar o cálculo mais difícil o campo idifl deve ter o mesmo valor nos registros calculados.

Exemplo:

idifl       creditoifl       debitoifl       saldoifl
------------------------------------------------
1          10,00                              10,00
1                              5,00            5,00
2          30,00                              30,00
2          70,00                            100,00
2                              20,00          80,00

Veja que o valor do campo saldo é gerado a cada registro adicionado levando-se em conta o valor adicionados no débito ou crédito e principalmente idifl. Note que não toma o saldo de 5,00 para o cálculo do saldo no registro novo, por causa do idifl.

digamos que agora eu deseja-se adicionar a sguinte linha:

idifl - 2

debitoifl - 30,00

o saldoifl - terá o resultado de 50,00

Como Faço?

Espero teu contato.

Obrigado

Vitor Eduardo

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Guest --felipe --
Olá, bom dia

tenho uma cds com a seguinte estrutura:

idifl - Integer

debitoifl - float

creditoifl - float

saldoifl - float

Eu gostaria de criar dois campos para armazenar a somatória dos campos debito e credito, com os quais usaria para calcular o saldo. Estes cálculos, soma do campo, e cálculo do saldo seriam efetuados toda vez que o usuário adicionar um registro na cds. Para tornar o cálculo mais difícil o campo idifl deve ter o mesmo valor nos registros calculados.

Exemplo:

idifl creditoifl debitoifl saldoifl

------------------------------------------------

1 10,00 10,00

1 5,00 5,00

2 30,00 30,00

2 70,00 100,00

2 20,00 80,00

Veja que o valor do campo saldo é gerado a cada registro adicionado levando-se em conta o valor adicionados no débito ou crédito e principalmente idifl. Note que não toma o saldo de 5,00 para o cálculo do saldo no registro novo, por causa do idifl.

digamos que agora eu deseja-se adicionar a sguinte linha:

idifl - 2

debitoifl - 30,00

o saldoifl - terá o resultado de 50,00

Como Faço?

Espero teu contato.

Obrigado

Vitor Eduardo

não entendi cara, mas tem 2 jeitos de você fazer isso:

- através de triggers no seu banco de dados

- inserir o calculo no evento OnChange.

vamos supor que o saldoifl seja (idifl*debitoifl), e supondo tambem que no seu form de registro você use os componentes:

DBEdit1 - idifl

DBEdit2 - debitoifl

DBEdit3 - saldoifl

no evento OnChange do DBEdit1 e DBEdit2:

procedure TPrincipalForm.DBEdit1Change(Sender: TObject);
begin
  if trim(DBEdit1.text)<>'' and trim(DBEdit2.text)<>'' then
    DBEdit3.text:=floattostr(strtofloat(DBEdit1.text)*strtofloat(DBEdit2.text));
end;

procedure TPrincipalForm.DBEdit2Change(Sender: TObject);
begin
  if trim(DBEdit1.text)<>'' and trim(DBEdit2.text)<>'' then
  DBEdit3.text:=floattostr(strtofloat(DBEdit1.text)*strtofloat(DBEdit2.text));
end;

se não conseguir fazer o calculo da uma explicadinha melhor que eu tento ajuda

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
- inserir o calculo no evento OnChange.

vamos supor que o saldoifl seja (idifl*debitoifl), e supondo tambem que no seu form de registro você use os componentes:

DBEdit1 - idifl

DBEdit2 - debitoifl

DBEdit3 - saldoifl

no evento OnChange do DBEdit1 e DBEdit2:

procedure TPrincipalForm.DBEdit1Change(Sender: TObject);
begin
  if trim(DBEdit1.text)<>'' and trim(DBEdit2.text)<>'' then
    DBEdit3.text:=floattostr(strtofloat(DBEdit1.text)*strtofloat(DBEdit2.text));
end;

procedure TPrincipalForm.DBEdit2Change(Sender: TObject);
begin
  if trim(DBEdit1.text)<>'' and trim(DBEdit2.text)<>'' then
  DBEdit3.text:=floattostr(strtofloat(DBEdit1.text)*strtofloat(DBEdit2.text));
end;

se não conseguir fazer o calculo da uma explicadinha melhor que eu tento ajuda

abraços

felipe, vai aqui uma dica para você também:

Quando utilizar componentes data-aware não use a propriedade Text como exemplificado. Duas razões:

1) acaba tendo que fazer uso de funções auxiliares;

2) se estivermos falando de valores formatados como "2.530,50", a função de conversão vai falhar. você teria que antes transformá-la em "2530.50".

Então, dê preferência em utilizar os campos do CDS direto, como no exemplo:

if CDSContasDebitoifl.IsNull then // equivale a testar " text='' " (na maioria das vezes)

CDSContasSaldoifl.Value := CDSContasSaldoifl.Value -CDSContasDebitoifl.Value;

ou usando o tipo retornado forçado (.AsInteger, .AsFloat,...) porque se a variável tiver nula ele será convertido para o valor correspondente (neste caso zero):

CDSContasSaldoifl.AsFloat := CDSContasSaldoifl.AsFloat -CDSContasDebitoifl.AsFloat;

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...