Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2004
delphicano delphicano is offline
Miembro
 
Registrado: may 2003
Ubicación: Quilpué, CHILE
Posts: 12
Poder: 0
delphicano Va por buen camino
Question No se me registra el separador decimal en Acces

Hola estimados amigos:

Tengo una aplicación desarrollada en delphi, que opera con una base de datos access. Todo funciona "casi impecable", porque el problema se da cuando registro decimales en la base de datos, no se registra el punto separador de decimales. Por ejemplo registro el 10.2 y en la base de datos queda como 102 y no me tira ningún error!!

El tipo de dato es double y realmente no sé qué está pasando. El campo se llama cantidad dentro de una tabla llamada materiales. Esto es lo que hago:

with query do
begin
close;
sql.clear;
sql.add('update materiales set cantidad=cantidad+'+edit1.text+' where ...');
execsql;
end;

Obviamente hago las validaciones al edit1 para que sea un real (no usar comas, letras, no más de un punto, etc.) Es en ese edit donde pongo el valor 10.2 (u otro) y en la base de datos queda como 102 al registrarse.

De antemano agradezco la ayuda.
__________________
Saludos desde Quilpué, CHILE
Responder Con Cita
  #2  
Antiguo 12-01-2004
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 21
ramiretor Va por buen camino
Hola:
No entendí porque en la sentencia pones:

'update materiales set cantidad=cantidad....

lo que no entiendo porque cantidad = cantidad como cadena

Saludos
__________________
Ernesto R.
Responder Con Cita
  #3  
Antiguo 13-01-2004
delphicano delphicano is offline
Miembro
 
Registrado: may 2003
Ubicación: Quilpué, CHILE
Posts: 12
Poder: 0
delphicano Va por buen camino
Lo que hago en definitiva es sumar al valor actual que está en la BD, el valor que trae el edit.

Por ejemplo si en la BD está el valor 5.2 y le quiero sumar 10.2, el resultado que debe qeudar registrado es 5.2+10.2=15.4, pero queda como 154.

En la actualización lo que hago es, al valor actual, sumarle lo que trae el parámetro. Así como esto:

cantidad:=5.2;
cantidad:=cantidad+10.2;

Es lo mismo.

Es el único error que me falta arreglar para entregar mi trabajo, ayúdenme por favor.

Muchas Gracias.
__________________
Saludos desde Quilpué, CHILE
Responder Con Cita
  #4  
Antiguo 13-01-2004
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 21
ramiretor Va por buen camino
Hola:
Pues es que en la primer consulta pones el valor de cantidad como cadena es decir no lo va a reconocer como variable.
Otra solucion es que por qué no pones la consulta con parámetros?, por ejemplo en diseño pones en la propiedad SQL del query algo asi:

update materiales set cantidad=:tfCantidad
where ....

bueno lo siguiente sería que le digas al query el tipo de parámetro en la propiedad Params haciendo doble clic te listará los parámetros de la consulta. Seleccionas el correspondiente y en la propiedad DataType seleccionas ftFloat y en la propiedad ParamType seleccionas ptInput


ahora en el código haces algo asi:

with query do
begin
close;
ParamByName('tfCantidad').AsFloat := Cantidad + StrToFloat(edit1.text);
execsql;
end;


y con eso debe de funcionar

Espero que te sirva de algo

Saludos a to2
__________________
Ernesto R.
Responder Con Cita
  #5  
Antiguo 13-01-2004
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 21
ramiretor Va por buen camino
Bueno para seguir con la manera en la que estabas y para complementar la respuesta anterior, yo te recomendaria guardarás toda la cantidad en una variable por ejemplo CantidadTotal, algo asi:

var
CantidadTotal: Real;

begin
...
CantidadTotal := Cantidad + StrToFloat(Edit1.Text);

y con la consulta trabajas:

with query do
begin
close;
sql.clear;
sql.add('update materiales set cantidad=' + FloatToStr(CantidadTotal) +
' where ...');
execsql;
end;

y debería también de funcionar
Saludos y no desesperes
__________________
Ernesto R.
Responder Con Cita
  #6  
Antiguo 13-01-2004
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
¿Porqué no miras tb en el panel de control en configuraciónb regional del pc el caracter utilizado como separador de miles y de decimales?.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 17:43:15.


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