Conversão de Campo Currency para String
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 ???
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
Curtidas 0
Respostas
Jairroberto
16/07/2003
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
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
GOSTEI 0
Gilsonlongo
16/07/2003
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,
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
GOSTEI 0
Jairroberto
16/07/2003
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:
Um abraço,
Jair
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
GOSTEI 0
Gilsonlongo
16/07/2003
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.
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.
GOSTEI 0
Jairroberto
16/07/2003
Olá, amigo!
A forma utilizada por você deve funcionar corretamente.
Um abraço,
Jair
A forma utilizada por você deve funcionar corretamente.
Um abraço,
Jair
GOSTEI 0