Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con insert y campo float (https://www.clubdelphi.com/foros/showthread.php?t=22601)

Ivanzinho 21-06-2005 13:07:15

Problema con insert y campo float
 
Hola foro:

Tengo un problema al hacer un insert en una tabla, ya que tengo que insertar un campo float.

El problema es el que sigue:

Al hacer :
Código SQL [-]
 Insert into tabla
values (campo1, campo2, campofloat, campo4)
me da un error, ya que el campo float lo coje como 2 campos debio a la coma de los decimales.

Utilizo un componente IBSQL y la BD es firebir 1.5.Espero que alguien pueda decirme como cambiar la coma por un punto u otro metodo para solucionar esto.

Gracias de todos modos.

Lepe 21-06-2005 16:23:59

Has probado:
Código SQL [-]
 Insert into tabla (NombreCampo1, NombreCampo2, NombreCampoFloat,NombreCampo4)
values (campo1, campo2, campofloat, campo4)

:confused:

Con esto debería detectar el tipo de campo sin problemas.

Un saludo

Ivanzinho 21-06-2005 17:38:08

Gracias por tu respuesta Lepe, pero me da el mismo problema, ya que la coma de decimales la entiende como de separación de campos y me da el error de que el número de valores es mayor que el número de campos.

Estoy mirando si existe alguna funcion que cambie todas las ocurrencias de un caracter en un String por otro, ya que de ese modo solucionaría el problema, si alguién conoce alguna función que haga esto agradecería que me lo comunicase y si la encuentro yo primero también lo pondre por aquí.

Lepe 21-06-2005 23:42:24

vaya, se me pasó por alto el tema de sysutils.DecimalSeparator.

Supongo que quieres usar el sistema español, es decir, el punto como separador de miles y la coma como separador decimal. Logicamente Delphi usa la configuración al revés.

La función que buscas viene en Delphi 6 o superior:

StringReplace(TheString, ',', '.', [rfReplaceAll])

Para quitar los puntos de millar puedes usar, la misma función dejando el segundo parámetro vacio:

StringReplace(TheString, '.', '', [rfReplaceAll])

Edito para no alargar más el tema:
Si no tienes delphi 6, siempre puedes hacer un bucle:
Código Delphi [-]
 str := '6.546.798,00';
 repeat 
   i:= pos('.',str);
   if i>0 then
   begin
     delete(str,i,1);
   end
 until i=0;
 i:= pos(',',str);
 if i>0 then
  str[i]:= '.'; // cambiamos la coma por un punto.
Dicho de memoria, así que revisalo ;)

Un saludo

Un saludo.

Ivanzinho 22-06-2005 10:07:22

Muchas gracias lepe, esta vez has dado en el clavo, y perdón si no me aclaré mucho en el primer mensaje. Gracias de nuevo


La franja horaria es GMT +2. Ahora son las 17:30:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi