Fórum Mascara para real com valor acima de 1000,00 #601218
17/03/2019
0
Delhpi 10 banco Fitebird 2.5
Fields numeric 15,2
Var
valor : real
Field = DisplayFormat ###,###,##0.00
Quando tiro a mascara funciona
TX53 := 1000.01;
TX54 := 1540.80;
TX55 := 1540.81;
TX56 := 7703.90;
TX57 := 7703.91;
TX58 := 30815.30;
TX59 := 30815.31;
TX60 := 50000.30;
valor:=strToFloat(DBEdit12.Text );
///////// ATE 70
IF (VALOR <= tx42) and (TX = ''A'') THEN
DBEDIT40.TEXT := ''78,31'';
IF (VALOR <= TX42) and (TX = ''B'') THEN
DBEDIT40.TEXT := ''104,35'';
IF (VALOR <= TX42) and (TX = ''C'') THEN
DBEDIT40.TEXT := ''80,71'';
//////// 70,01 ATE 154,001 ///////
IF (VALOR >= TX43) AND (VALOR <= TX44) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''89,11'';
////////154,01 A 308,30 ///////
IF (VALOR >= TX45) AND (VALOR <= TX46) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''92,79'';
////////////////308,31 A 462,30 /////////////
IF (VALOR >= TX47) AND (VALOR <= TX48) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''97,72'';
///////////////// 462,31 A 770,40 ///////
IF (VALOR >= TX49) AND (VALOR <= TX50) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''102,03'';
/////// 770,41 A 1000,00 /////
IF (VALOR >= TX51) AND (VALOR <= TX52) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''106,44'';
/////// 1000,01 A 1540,800 /////
IF (VALOR >= TX53) AND (VALOR <= TX54) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''118,74'';
/////// 1540,81 A 7.703,90 /////
IF (VALOR >= TX55) AND (VALOR <= TX56) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''126,82'';
Fields numeric 15,2
Var
valor : real
Field = DisplayFormat ###,###,##0.00
Quando tiro a mascara funciona
TX53 := 1000.01;
TX54 := 1540.80;
TX55 := 1540.81;
TX56 := 7703.90;
TX57 := 7703.91;
TX58 := 30815.30;
TX59 := 30815.31;
TX60 := 50000.30;
valor:=strToFloat(DBEdit12.Text );
///////// ATE 70
IF (VALOR <= tx42) and (TX = ''A'') THEN
DBEDIT40.TEXT := ''78,31'';
IF (VALOR <= TX42) and (TX = ''B'') THEN
DBEDIT40.TEXT := ''104,35'';
IF (VALOR <= TX42) and (TX = ''C'') THEN
DBEDIT40.TEXT := ''80,71'';
//////// 70,01 ATE 154,001 ///////
IF (VALOR >= TX43) AND (VALOR <= TX44) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''89,11'';
////////154,01 A 308,30 ///////
IF (VALOR >= TX45) AND (VALOR <= TX46) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''92,79'';
////////////////308,31 A 462,30 /////////////
IF (VALOR >= TX47) AND (VALOR <= TX48) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''97,72'';
///////////////// 462,31 A 770,40 ///////
IF (VALOR >= TX49) AND (VALOR <= TX50) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''102,03'';
/////// 770,41 A 1000,00 /////
IF (VALOR >= TX51) AND (VALOR <= TX52) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''106,44'';
/////// 1000,01 A 1540,800 /////
IF (VALOR >= TX53) AND (VALOR <= TX54) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''118,74'';
/////// 1540,81 A 7.703,90 /////
IF (VALOR >= TX55) AND (VALOR <= TX56) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''126,82'';
Nevaldo Rebés
Curtir tópico
+ 0
Responder
Post mais votado
17/03/2019
Olá Nevaldo, um numero acima de 1000 que tem máscara 1.000,00 no TEdit, tem que remover os pontos (deixe a vírgula) antes de converter para float, por exemplo
porém percebo que você utiliza dbEdit, então seria melhor você acessar os fields do dataset ligado a TDBEdit ou acessar o field diretamente porque aí você corta o uso da String, por exemplo:
Espero ter ajudado, um forte abraço e fique com Deus.
var
s: String;
valor: real;
begin
s:=stringReplace(dbedit.txt, '.',''); //isso apaga os pontos, na verdade, substitui o ponto por vazio e dá no mesmo.
valor:=strToFloat(s);
end;
porém percebo que você utiliza dbEdit, então seria melhor você acessar os fields do dataset ligado a TDBEdit ou acessar o field diretamente porque aí você corta o uso da String, por exemplo:
var
valor: double;
begin
TX53 := 1000.01;
TX54 := 1540.80;
TX55 := 1540.81;
TX56 := 7703.90;
TX57 := 7703.91;
TX58 := 30815.30;
TX59 := 30815.31;
TX60 := 50000.30;
valor:=DBEdit12.Field.asfloat; //pega o campo no formato double/real diretamente (se ele for realmente do tipo double no banco e no dataset)
///////// ATE 70
IF (VALOR <= tx42) and (TX = ''A'') THEN
DBEDIT40.field.asFloat := 78.31; //não precisa atribuir como string; mas cuidado com o ponto ao invés de virgula e é só repetir a idéia nos próximos...
IF (VALOR <= TX42) and (TX = ''B'') THEN
DBEDIT40.field.asFloat :=104.35;
IF (VALOR <= TX42) and (TX = ''C'') THEN
DBEDIT40.field.asFloat := ''80,71'';
//////// 70,01 ATE 154,001 ///////
IF (VALOR >= TX43) AND (VALOR <= TX44) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''89,11'';
////////154,01 A 308,30 ///////
IF (VALOR >= TX45) AND (VALOR <= TX46) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''92,79'';
////////////////308,31 A 462,30 /////////////
IF (VALOR >= TX47) AND (VALOR <= TX48) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat:= ''97,72'';
///////////////// 462,31 A 770,40 ///////
IF (VALOR >= TX49) AND (VALOR <= TX50) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''102,03'';
/////// 770,41 A 1000,00 /////
IF (VALOR >= TX51) AND (VALOR <= TX52) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''106,44'';
/////// 1000,01 A 1540,800 /////
IF (VALOR >= TX53) AND (VALOR <= TX54) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''118,74'';
/////// 1540,81 A 7.703,90 /////
IF (VALOR >= TX55) AND (VALOR <= TX56) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''126,82'';
Espero ter ajudado, um forte abraço e fique com Deus.
Hélio Devmedia
Responder
Gostei + 1
Mais Posts
18/03/2019
Nevaldo Rebés
Olá Nevaldo, um numero acima de 1000 que tem máscara 1.000,00 no TEdit, tem que remover os pontos (deixe a vírgula) antes de converter para float, por exemplo
porém percebo que você utiliza dbEdit, então seria melhor você acessar os fields do dataset ligado a TDBEdit ou acessar o field diretamente porque aí você corta o uso da String, por exemplo:
Espero ter ajudado, um forte abraço e fique com Deus.
var
s: String;
valor: real;
begin
s:=stringReplace(dbedit.txt, '.',''); //isso apaga os pontos, na verdade, substitui o ponto por vazio e dá no mesmo.
valor:=strToFloat(s);
end;
porém percebo que você utiliza dbEdit, então seria melhor você acessar os fields do dataset ligado a TDBEdit ou acessar o field diretamente porque aí você corta o uso da String, por exemplo:
var
valor: double;
begin
TX53 := 1000.01;
TX54 := 1540.80;
TX55 := 1540.81;
TX56 := 7703.90;
TX57 := 7703.91;
TX58 := 30815.30;
TX59 := 30815.31;
TX60 := 50000.30;
valor:=DBEdit12.Field.asfloat; //pega o campo no formato double/real diretamente (se ele for realmente do tipo double no banco e no dataset)
///////// ATE 70
IF (VALOR <= tx42) and (TX = ''A'') THEN
DBEDIT40.field.asFloat := 78.31; //não precisa atribuir como string; mas cuidado com o ponto ao invés de virgula e é só repetir a idéia nos próximos...
IF (VALOR <= TX42) and (TX = ''B'') THEN
DBEDIT40.field.asFloat :=104.35;
IF (VALOR <= TX42) and (TX = ''C'') THEN
DBEDIT40.field.asFloat := ''80,71'';
//////// 70,01 ATE 154,001 ///////
IF (VALOR >= TX43) AND (VALOR <= TX44) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''89,11'';
////////154,01 A 308,30 ///////
IF (VALOR >= TX45) AND (VALOR <= TX46) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''92,79'';
////////////////308,31 A 462,30 /////////////
IF (VALOR >= TX47) AND (VALOR <= TX48) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat:= ''97,72'';
///////////////// 462,31 A 770,40 ///////
IF (VALOR >= TX49) AND (VALOR <= TX50) AND (TX = ''A'') THEN
DBEDIT40.TEXT := ''102,03'';
/////// 770,41 A 1000,00 /////
IF (VALOR >= TX51) AND (VALOR <= TX52) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''106,44'';
/////// 1000,01 A 1540,800 /////
IF (VALOR >= TX53) AND (VALOR <= TX54) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''118,74'';
/////// 1540,81 A 7.703,90 /////
IF (VALOR >= TX55) AND (VALOR <= TX56) AND (TX = ''A'') THEN
DBEDIT40.field.asFloat := ''126,82'';
Espero ter ajudado, um forte abraço e fique com Deus.
Cara muito obrigado, ajudou e muito valeu que Deus continue te iluminando.
Um abraço
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)