Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-12-2008
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
SQL y coma decimal

Hola amigos, una consulta...

Utilizo Delphi 2006 y Firebird 2.0
Intento almacenar un registro en una base de dato utilizando este codigo.

Código Delphi [-]
ibsql1.close;
ibsql1.sql.clear;
ibsql1.sql.add('insert into inventario (id, precio) values (:id, recio)')
ibsql1.parambyname('id').asstring:='001';
ibsql1.parambyname('precio').asstring:=currencyedit1.text;
ibsql1.execquery;

La tabla iventario esta definida como sigue:
id: varchar
precio: doubleprecision

El problema surge cuando intento almacenar un registro que el precio no es un numero entero sino por ejemplo: 123,456.

Lo que ocurre es que se me almacena un registro que en el campo precio tiene un valor de 123456... es como si la coma decimal desapareciera.

Porque ocurre esto??

Como lo soluciono??

Gracias
Responder Con Cita
  #2  
Antiguo 26-12-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Creo que en lugar de "asString" deberías usar algo como "asDouble" cuando preparas el valor del "parámetro precio". Ya digo que no estoy seguro, pero, pareciera que la coma se pierde al convertir el valor a "string", y por eso lo digo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 26-12-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
El problema viene porque en SQL, los decimales los marca el punto y no la coma.

Tendrás que convertirlo a texto, y luego por ejemplo utilizar StringReplace, para sustituir la coma por el punto.

Si la ocasión lo merece puedes construirte una función que haga todo en uno y que compruebe también la integridad de los datos a convertir.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 26-12-2008
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 18
Kipow Va por buen camino
Lo que veo yo es que el valor CurrencyEdit1.Text, es el valor numerico con formato, proba con esto

Código Delphi [-]
ibsql1.parambyname('precio').AsFloat := CurrencyEdit1.Value;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
La importancia de una coma. marcoszorrilla La Taberna 5 16-07-2008 16:28:58
!! Coversion Binario a Decimal y de Decimal codigo ascii BuRtOn Varios 4 14-03-2008 04:13:11
xml punto coma carlomagno Varios 2 06-09-2004 11:49:35
Separador decimal como coma (,) Investment SQL 2 26-01-2004 11:36:10
Coma Investment Humor 1 02-07-2003 10:45:07


La franja horaria es GMT +2. Ahora son las 08:08:04.


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
Copyright 1996-2007 Club Delphi