Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Chrismiller

Evento OnCalcFields

Recommended Posts

Ola pessoal.Tenho um DBGrid com o movimento bancario, ou seja, uma coluna com os Depositos, outra com os Pagamentos e outra com o Saldo. A coluna Saldo é um campo calculado e quero que este campo contenha o saldo atual. Para isso eu preciso pegar o saldo anterior que esta no registro anterior, e em seguida somar ou diminuir com o movimento do registro atual.Alguem teria uma outra forma de solucionar este problema ou alguma dica sobre isso ?Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para este tipo de situação realmente você terá de fazer cálculos antes mesmo de exibir, uma vez o que eu criei foi uma tabela temporária para fazer este tipo de situação, mas acredito que consiga fazer todo o controle no código mesmo, ou então, pesquisando um pouco poderia fazer por comando SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, na verdade existem vários campos q devem ser calculados. Por exemplo:no oncalcfields :Nº DE DIAS - uso a função DaysBetween (table.datafinal, table.datainicial);VALOR - (Valor Inicial * Nº de Dias)Essas duas funções estão todas OK.Dae preciso calcular o SALDO, q seria SALDO_INICIAL (valor fixo, esta em outra tabela)SALDO = SALDO_INICIAL - VALORPor exemplo:SALDO_INICIAL 200,00VALOR SALDO 50,00 150,00 (SALDO_INICIAL - VALOR) 100,00 50,00 (SALDO_ANTERIOR - VALOR)Não estou conseguindo fazer no OnCalcfields, alguem poderia me ajudar??Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não teria como você criar uma função que busque este valor anterior ? No caso quando estiver no CalclFields executando os cálculos, iria chamar a função para buscar o valor anterior, uma idéia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok ai vai

 

Saldo Inicial = 40.000,00

 

Valor (Pagto) | Saldo

5.000,00 | 35.000,00

10.000,00 | 25.000,00

500,00 | 24.500,00

14.500,00 | 10.000,00

5.000,00 | 5.000,00

 

 

Os pagamentos são inseridos, e o movimento são mostrados num DBGrid.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra forma, pode ser um tanto quanto que inviavel, mas e se você criasse um campo no BD ? Tipo com o nome de VLSALDOAUX, no momento de executar a consulta, faria um while na qry atribuíndo o valor para esta variável do BD, sendo que não precissaria do CalcField, ficaria em um campo do BD mesmo... Ou se quiser podemos continuar vendo como corrigir efetuando o cálculo pelo CalcField...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O OnCalcField é um evento da sua table ou query que é disparado quando você executa uma ação sobre um registro da sua tabela, no caso quando você faz uma consulta e tem o evento OnCalcField, cada registro ele vai passando e entra no OnCalcFields...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio,e utilizando uma tabela temporaria, como você conseguiu fazer? e os lançamentos estão em ordem de data, se caso eu inserir um pagto com data anterior, terei q recalcular cada saldo inserido? Nossa, naum sei mais o q fazer, toh perdido

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que a idéia da tabela temporária para mim deu certo pq funcion no sistema como consulta, no caso quando o kara pede a consulta, ele coloca um label de Aguarde e monta a tabela temporária...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.