Mascara para real com valor acima de 1000,00
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
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
Clique aqui para fazer login e interagir na Comunidade :)