PDA

Ver la Versión Completa : Convertir coma en punto


lucho1981
19-04-2009, 22:40:13
Buenas amigos. Mi consulta consiste en que cuando quiero guardar un valor tipo float (2,5) tengo error en mysql, porq admite el valor 2.5 y no la coma.
Lo que estoy haciendo es tomar un valor de la base de datos (valor con coma) y sumarle o restarle algo (según corresponda), ese valor lo guardo en una variable tipo double y le sumo o resto el contenido de un edit pasado a float. El problema es que en delphi el tipo de dato FLOAT admite un valor con comas y no con punto.
No se si este haciendo lo mas óptimo pero deberia funcionar a mi modo de ver.
Desde ya muchas gracias
procedure TFcajainout.CajaEntrada();
var
hoy:Tdatetime; ya, new:double;
begin
hoy:=now;
With DM.QCajainout do
begin
ParamByName ('fecha').Value:=Formatdatetime('yyyymmdd',hoy);
ParamByName ('lega').Value:=Principal.Lega.Caption;
ParamByName ('ptipo').Value:='1';
ParamByName ('monto').Value:=monto.Text;
ParamByName ('concepto').Value:=concepto.Text;
ExecSQL;
end;
Dm.Tcaja.locate('id','1',[]);
ya:=DM.tcaja.FieldByName('actual').asfloat;
new:=ya+strtofloat(monto.text);
With dm.Qcajaactual do
begin
ParamByname ('nuevo').Value:=new;
ExecSQL;
end;
end;


Utilizo delphi 7, zeos y mysql6.

MaMu
20-04-2009, 06:24:43
SeparadorDecimal := '.';

FloatEnTextoConElSeparadorQueYoQuiera := StringReplace(FormatFloat('##,###0.00',Numero),',',SeparadorDecimal, [rfReplaceAll]));


Saludos

rgstuamigo
22-04-2009, 23:47:06
Buenas amigos. Mi consulta consiste en que cuando quiero guardar un valor tipo float (2,5) tengo error en mysql, porq admite el valor 2.5 y no la coma.
Lo que estoy haciendo es tomar un valor de la base de datos (valor con coma) y sumarle o restarle algo (según corresponda), ese valor lo guardo en una variable tipo double y le sumo o resto el contenido de un edit pasado a float. El problema es que en delphi el tipo de dato FLOAT admite un valor con comas y no con punto.
No se si este haciendo lo mas óptimo pero deberia funcionar a mi modo de ver.
Desde ya muchas gracias
Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure TFcajainout.CajaEntrada();
var
hoy:Tdatetime; ya, new:double;
begin
hoy:=now;
With DM.QCajainout do
begin
ParamByName ('fecha').Value:=Formatdatetime('yyyymmdd',hoy);
ParamByName ('lega').Value:=Principal.Lega.Caption;
ParamByName ('ptipo').Value:='1';
ParamByName ('monto').Value:=monto.Text;
ParamByName ('concepto').Value:=concepto.Text;
ExecSQL;
end;
Dm.Tcaja.locate('id','1',[]);
ya:=DM.tcaja.FieldByName('actual').asfloat;
new:=ya+strtofloat(monto.text);
With dm.Qcajaactual do
begin
ParamByname ('nuevo').asfloat:=new;;)//creo que aqui era el problema

ExecSQL;
end;
end;


Pruebalo.....:cool:
Edito: Cuando obtengas o asignes valores a(de) los campos(Field) siempre trata de asignarselo haciendo uso de sus propiedades tales como:
.AsInteger para los integer,.AsFloat para los Float,.AsString para los string,etc. Trata en lo posible no usar la propiedad .Value pues es de tipo variant y creo que por ahi puede ocurrir algunos errores de tipos de datos.;)