Ir para conteúdo

POWERED BY:

Arquivado

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

Seph1903

[Resolvido] Problemas com fórmula simples

Recommended Posts

Olá

Estou começando a programar em Delphi

e tem muitas coisa simples que não consigo

fazer...

Por exemplo, possuo uma tabela com os campos

PeA_Prj campo do tipo numeric que armazena no Firebird um valor percentual

VaF_Prj campo do tipo numeric que armazena um valor de projeto. Ex.: 10.000,00

VaR_Prj campo do tipo numeric que armazena a multiplicação de PeA_Prj por VaF_Prj

 

Anteriormente o campo PeA_Prj estava colocado como sendo do tipo decimal.

 

coloquei esse código no delphi:

procedure TfrmProjeto.DBEvalorformalExit(Sender: TObject);

var per : real;

begin

dm.CDS_PRJVaR_Prj.Value:= (dm.CDS_PRJVaF_Prj.Value * dm.CDS_PRJPeA_Prj.value);

end;

 

Mas ele ocasiona esse erro:

[Error] ufrmProjeto.pas(215): Operator not applicable to this operand type

[Fatal Error] Projetos.dpr(27): Could not compile used unit 'ufrmProjeto.pas'

 

Deve ser uma coisa simples, mas já delete inclusive os campos no firebird

fazendo a troca de decimal (no campo PeA_Prj) para numeric achando que era esse o problema.

 

Se puderem dar uma mão agradeço desde já

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse tipo de erro é ocasionado por incompatibilidade de valores ...

 

se um campo é do tipo NUMERIC e você está tentando colocar um valor com decimais nele, vai dar erro ...

 

Deve ser uma coisa simples, mas já delete inclusive os campos no firebird

fazendo a troca de decimal (no campo PeA_Prj) para numeric achando que era esse o problema.

no banco de dados, você fez a alteração do campo, deixando todos como NUMERIC, mas e no delphi, você fez a alteração ???

 

veja no FieldEditor do seu DataSet e verifique o tipo do campo que você alterou, provavelmente, terá que excluir o campo no FieldEditor, fechar a conexão com o banco de dados e inclui-lo novamente ...

 

abraços !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá...

Obrigado por responder!

 

no banco de dados, você fez a alteração do campo, deixando todos como NUMERIC, mas e no delphi, você fez a alteração ???

veja no FieldEditor do seu DataSet e verifique o tipo do campo que você alterou, provavelmente, terá que excluir o campo no FieldEditor, fechar a conexão com o banco de dados e inclui-lo novamente ...

No Delphi já excluí os fields com o banco desconectado e após conectá-lo novamente incluí os fields novamente. Mas acho que o problema deve ser no código. O código para efetuar uma multiplicação entre numerics é feito dessa forma certo? Ou viajei?

Mais uma vez valeu por me dar atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

está correto .... sempre que você usa NOME_DO_CAMPO.Value, ele assume o valor original que está na tabela ... só para desencargo, verifique no FieldEditor, se o tipo dos 3 campos são iguais .... muitas vezes acontece de o delphi não atualizar o tipo do campo, sendo necessário fechar a conexão com o banco e abri-la novamente para tal atualização ...

 

caso esteja tudo correto, faça um teste, colocando os valores do calculo em uma variável e depois tentando jogá-la ao campo ....

 

 

qq coisa é só postar novamente ...

 

abraços !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel!

 

Fiz os testes como solicitado.

Efetuei umas duas vezes a conexão como banco!

Troquei os campos que estavam todos em numeric

Para decimais e aew funcionou...

Pode ser que havia "lixo" do delphi em memória...

 

Valeu o auxílio.

Abraço.

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.