Seph1903 0 Denunciar post Postado Junho 28, 2009 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
Daniel Sanches 0 Denunciar post Postado Junho 28, 2009 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
Seph1903 0 Denunciar post Postado Junho 29, 2009 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
Daniel Sanches 0 Denunciar post Postado Junho 29, 2009 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
Seph1903 0 Denunciar post Postado Julho 4, 2009 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
Daniel Sanches 0 Denunciar post Postado Julho 4, 2009 é isso aí ... essa é a verdadeira lógica da programação, muitas vezes, sem lógica !!! hehehehe abraços !!! Compartilhar este post Link para o post Compartilhar em outros sites