Problemas com calculo em dbgrid (onCalcFields)

Delphi

07/11/2013

Boa tarde a todos do fórum!!

Estou com o seguinte problema, tenho uma tabela onde lanço um controle de sessões, então faço assim: lanço uma guia de entrada de 10 sessoes, aí, a cada atendimento faço um lançamento de -1 oque faz que com diminua as sessões remanescentes, certo?, até aí perfeito estava funcionando coisa linda, um select com um group by, filé, só que agora a cliente pediu pra colocar a data da entrada da guia, aí o meu group by já ferrou, então pensei em fazer um campo de saldo tipo calculate e fazer uma formula no oncalcfields, mas oque ocorre é que o primeiro e o ultimo registro não estão sendo calculados... segue abaixo as minhas rotinas....

aqui faço a abertura das guias de entradas (as que tem a data que preciso) e depois abro o form da relação de guias do cliente..
      FSessoes.Qsessoes.Close;
      FSessoes.QSessoes.Parameters[0].Value := edCodPac.Text;
      FSessoes.QSessoes.Open;
      FSessoes.QSessoes.First;
      FSessoes.ShowModal;


aí no oncalcfields abro uma query que pega as sessões realizadas pra poder fazer o calculo : entrada - usada = saldo de sessões disponiveis..

  QView.Close;
  QView.Open;
  QSessoesI01_SALDO.Value := QSessoesI01_QTDSESSOES.AsInteger + QViewSOMA.AsInteger;


vou descrever oque acontece abaixo:

um cliente com 2 guias 2323 e 2424, na guia 2323 ele ja foi atendido todas as vezes e na 2424 ainda resta uma sessão e na grid esta aparecendo assim

2323 10
2424 1

se tiver mais guias, acontece de não calcular sempre com o primeiro e o ultimo registro...

as vezes pode ser algo simples de resolver, mas não estou conseguindo resolver, desde já agradeço a ajuda..

abs;;;
Lindolfo Junior

Lindolfo Junior

Curtidas 0

Respostas

Pjrm1470

Pjrm1470

07/11/2013

Boa tarde a todos do fórum!!

Estou com o seguinte problema, tenho uma tabela onde lanço um controle de sessões, então faço assim: lanço uma guia de entrada de 10 sessoes, aí, a cada atendimento faço um lançamento de -1 oque faz que com diminua as sessões remanescentes, certo?, até aí perfeito estava funcionando coisa linda, um select com um group by, filé, só que agora a cliente pediu pra colocar a data da entrada da guia, aí o meu group by já ferrou, então pensei em fazer um campo de saldo tipo calculate e fazer uma formula no oncalcfields, mas oque ocorre é que o primeiro e o ultimo registro não estão sendo calculados... segue abaixo as minhas rotinas....

aqui faço a abertura das guias de entradas (as que tem a data que preciso) e depois abro o form da relação de guias do cliente..
      FSessoes.Qsessoes.Close;
      FSessoes.QSessoes.Parameters[0].Value := edCodPac.Text;
      FSessoes.QSessoes.Open;
      FSessoes.QSessoes.First;
      FSessoes.ShowModal;


aí no oncalcfields abro uma query que pega as sessões realizadas pra poder fazer o calculo : entrada - usada = saldo de sessões disponiveis..

  QView.Close;
  QView.Open;
  QSessoesI01_SALDO.Value := QSessoesI01_QTDSESSOES.AsInteger + QViewSOMA.AsInteger;


vou descrever oque acontece abaixo:

um cliente com 2 guias 2323 e 2424, na guia 2323 ele ja foi atendido todas as vezes e na 2424 ainda resta uma sessão e na grid esta aparecendo assim

2323 10
2424 1

se tiver mais guias, acontece de não calcular sempre com o primeiro e o ultimo registro...

as vezes pode ser algo simples de resolver, mas não estou conseguindo resolver, desde já agradeço a ajuda..

abs;;;

Seu campo "I01_SALDO" é do tipo Calc (Calculado)?
OnCalcFields so atribui valor para campos de tipo calculado. Talvez esse seja o problema.

Abraço.
GOSTEI 0
Lindolfo Junior

Lindolfo Junior

07/11/2013

opa, obrigado pela atenção!!!

o campo é do tipo calc sim, na verdade o calculo esta sendo realizado, só que ele calcula somente os valores do meio, o primeiro e o ultimo, quando mexo na barra de rolagem vai variando, tem hora que aparece calculado, se mexo na barra não calcula, e fica assim... doidão...

JR
GOSTEI 0
POSTAR