GARANTIR DESCONTO

Fórum Conversão de Campo Currency para String #169696

16/07/2003

0

Olá.... Preciso converter um determinado valor existente em um DbEdit de string (R$ .......) para currency. Preciso pegar esse valor e compará-lo com um valor do tipo real. Acontece que quando tendo convertê-lo para currency (StrtoCurr), ele me retornar erro. Estou usando BD Access, e também tentei usá-lo como duplo (9.362,00), só que ao mudar o DisplayFormat para #,,0.00 e compara-lo com o valor em real em questão, ele também que informar que é impossível converter...

Não gostaria de deixar no formato 9632 ou 9632,8, sem a devida pontuação...

O que posso Fazer para não deixar no formato padrão ???


Gfcosta

Gfcosta

Responder

Posts

16/07/2003

Jairroberto

Olá!

Você não deve comparar o texto do DBEdit, convertido para Currency, pois você teria que eliminar os separadores de milhar e outros sinais que compõem a máscara de exibição do campo. Em vez disso use o valor do campo (DataField) que o DBEdit representa, que deve ser do tipo TCurrencyField ou TFloatField. Veja um exemplo:

if Table1CampoCurrency.AsCurrency > 0 then
ShowMessage(´O valor é maior que zero!´);


Um abraço,
Jair


Responder

Gostei + 0

05/10/2003

Gilsonlongo

Bom dia Jair,

Estou com problema nos campos edit e dibedit e mesmo mvalor (R$), tentei usar alguns formatos para mostrar ao usuário, mas quando o valor ultrapassa a casa do milhar dá erro ´Não é Ponto Flutuante´.

Será que tens alguma maneira de resolver o problema, isto é, apresentar valores em R$ e poder trabalhar com eles com variáveis sem erro...

Fico-lhe grato,



Olá! Você não deve comparar o texto do DBEdit, convertido para Currency, pois você teria que eliminar os separadores de milhar e outros sinais que compõem a máscara de exibição do campo. Em vez disso use o valor do campo (DataField) que o DBEdit representa, que deve ser do tipo TCurrencyField ou TFloatField. Veja um exemplo: if Table1CampoCurrency.AsCurrency > 0 then ShowMessage(´O valor é maior que zero!´); Um abraço, Jair



Responder

Gostei + 0

06/10/2003

Jairroberto

Olá, ´gilsonlongo´!

Ao usar DBEdit, vale a resposta que eu dei anteriormente. Se você usar MaskEdit, ou digitar separadores (de milhares e decimal) em um Edit, terá que eliminar os separadores de milhares e substituir o separador decimal digitado pelo separador decimal indicado na configuração do Windows, o que pode ser acessado através da variável global DecimalSeparator. Veja um exemplo:

var
  s: string;
  c: Currency;
begin
  // Remove os separadores de milhares
  s := StringReplace(Edit1.Text, ´.´, ´´, [rfReplaceAll]);
  // Substitui o separador decimal
  s := StringReplace(s, ´,´, DecimalSeparator, []);

  // Atribui a string válida a uma variável Currency
  c := StrToCurr(s);
end;



Um abraço,
Jair


Responder

Gostei + 0

19/10/2003

Gilsonlongo

Grande Jair,

Vou testar sua função.

Atualmente estou testando, -> Assim,

procedure TFCRDUP33.EditVALORTOTKeyPress(Sender: TObject; var Key: Char);
begin
if Key in [´,´,´.´] then Key := DecimalSeparator;
end;

Obridado e um abraço.


Responder

Gostei + 0

20/10/2003

Jairroberto

Olá, amigo!

A forma utilizada por você deve funcionar corretamente.


Um abraço,
Jair


Responder

Gostei + 0

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

Aceitar