TCC para dia 27/06 socorro! Delphi e mysql - Valor monetário!

15/06/2018

0

Pessoal, preciso muito da ajuda de vcs estou empacado aqui e acredito que seja a última dificuldade que vou enfrentar antes de apresentar meu TCC

É o seguinte tenho a tabela de produtos, tabela de itens ( entidade do meio) e tabela de notas fiscais é uma relação N-N. No cadastro de produtos além de outros dados cadastro o VALOR UNITÁRIO DE SAÍDA. Depois cadastro a nota fiscal e lanço os itens da nota. Só que para lançar um item de ENTRADA preciso verificar se o preço do produto de entrada(compra) é maior que o preço do produto de saída. Ai ele da uma mensagem que é maior é é necessário alterar o valor. Segue o código:

id:= //codigo do produto
Ztotitens.close;
Ztotitens.SQL.Clear;
Ztotitens.SQL.ADD('SELECT VALOR_UNIT as valor FROM CAD_PRODUTOS WHERE CODIGO = :pcodigo');
Ztotitens.ParamByName('pcodigo').Asinteger := id;
Ztotitens.Open;
// se o valor digitado no edit é maior que o que está na tabela de produtos
if(Ztotitens.FieldByName('valor').Asinteger < Strtoint(edit_valorunt.text)) and (edit_serie.Text='Nfe') then
begin
showmessage('Seu valor de compra é maior que seu valor de venda! Altere o valor do produto!');
edit_valorunt.SetFocus;
end
else
begin
//continua o programa;

para formatar os valores monetários, já vi o formatfloat, StrtoCurr, propriedade currency (não achei no edit do zeos) e outras coisas a mais! Ele da um erro de o ponto flutuante não é valido sei lá. Já vi que tem que trocar o ponto por virgula e etc mas ele está sempre entrando na mensagem que o preço do produto é maior mesmo que não seja na teoria!

COMO POSSO FORMATAR E COMPARAR OS VALORES MONETÁRIOS NO DELPHI OU MYSQL? A PESSOA DIGITA, FICA FORMATADO E MESMO ASSIM RODA NORMAL? PARA VALORES INTEIROS FUNCIONA MAS PARA VALORES REAIS EU TENHO ESSE PROBLEMA!

PRECISO DE AJUDA! DELPHI 7, MYSQL, ZEOSLIB
Luiz Silva

Luiz Silva

Responder

Posts

15/06/2018

Raimundo Pereira

Verifique o tipo de campo
Ztotitens.FieldByName('valor').Asinteger

Se é monetário Ztotitens.FieldByName('valor').value; na tabela, deve está do tipo double ou numeric.
Para gravar
Ztotitens.FieldByName('valor').value:=strtocur(edit_valorunt.text);


Responder

15/06/2018

Luiz Silva

Olá obrigado. O meu campo do banco de dados é decimal(10,2) poderia me explicar com mais detalhes? Tem também o problema de ponto flutuante na hora de comparar os valor. Usei uma que deixava por exemplo 1000 dessa forma: 1.000,00 mas parece que tenho que deixar assim no banco de dados: 1000.00 mas da problema que o ponto flutuante não é valido no delphi e tal. Pode ser que esteja fazendo uso de forma errada da função String Replace. Como vc faz para valores monetarios? E se fosse comparar com o do banco? Como vc faria?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar