![]() |
no actualiza un campo correctamente ( decimal)
Hola pues tengo lo siguiente :
TSQLConnection TSQLQuery ( llamado qryModifica) con 1 TcurrencyEdit llamado precio luego tengo la el campo PRECIO el cual es un numeric(15,4) pues bien actualizo dicho campo de la siguiente manera.. Código:
with datos.qryModifica do begin en la db se guarda como 1212 ( sin la , ) alguien me puede ayudar? saludos y gracias.. |
por que cargarlo de esa maner???
Lo mejor seria con un parametro with datos.qryModifica do begin SQL.Add('UPDATE articulos SET PRECIO1 = :Precio'); SQL.Add('WHERE clave = 7507'); ParamByName('Precio').AsCurrency := StrToCurr(precio.Text); ExecSQL; end; ExecSQL; end; |
gracias AdrianD por contestar
lo que me has indicado funciona la 1º vez ( algo raroo) no tenía conocimiento de parametros ( para que veas que estoy algo verde xD). en realidad tengo 3 datos reales en una clase derivada de TField ( QcurrEdit) la cual me devuelve un valor real con el método Value ( ejemplo : Precio.value) a la hora de hacer la actualización obtengo un error EdatabaseError parametro 'Descuento' no found. tengo lo siguiente a la hora de actualizar : Código:
SQL.Add('UPDATE clientes SET nombre = ''' + txtNombre.Text + ''','); saludos |
Vamos al principio:
1- ¿Que componentes usas? 2- ¿Por que cargar el query de esa forma y no hacerlo en tiempo de diceño? 3- si para 2 hay una respuesta valida, antes de volverlo a cargar deberias "limpiarlo" con: datos.qryModifica.SQL.Clear; o algo parecido |
1- ¿Que componentes usas?
TSQLConnection TSQLQuery ( llamado qryModifica) 2- ¿Por que cargar el query de esa forma y no hacerlo en tiempo de diceño? Pq dicho query lo utilizo tb para otros updates de diferentes tablas y en otros forms. 3- aqui no te entiendo. El problema que tengo es que a la hora de actualizar/insertar el campo precio, no se me actualizan/insertan los decimales ( si le meto 1,2 al hacer el update se guarda como 12) saludos y espero que me heches una mano, ya que no puedo seguir haciendo cosas sin resolver este problema. gracias y saludos |
he estado por ahy y a lo mejor puede ser por culpa de la base de datos
en la propiedad DEFAULT CHARACTER SET; esta propiedad indica el juego de caracteres que se utiliza podría poner lo siguiente ? DEFAULT CHARACTER SET WIN1250; que opinas ? saludos |
Cita:
Cita:
La primera vez actualizas la clave de 7507 y la segunda vez 250 Te debería dar un error en la sentencia sql. Solución: - Antes de hacer el sql.Add pon un sql.Clear En cuanto a la otra pregunta, puede que la coma la esté tomando como separador de miles en lugar de separador decimal, (que por otra parte es lógico en españa), usa 1.2 en lugar de 1,2 Saludos |
Cita:
pues como dices ahora ... Cita:
Aunque en la DB se guarda correctamente ( 123123123,12) hombre me gustaría saber como utilizar el separador coma ( ,) como DECIMAL saludos |
HOLA...
si quieres cambiar esta accion por default en todo el sistema de tu maquina lo que tienes que hacer es entrar a Panel de Control, Configuracion Regional, seleccionar en el primer Tab los formatos generales del idioma/pais o personalizarlos.... si solo te interesa que sea adecuado en tu programa solo necesitas al iniciar tu programa cambiar el valor de : espero te sirva... saludos... |
A la acertada respuesta de Vic_ia solamente añadir que debes hacerlo en el primer Form o datamodule que crees en tu aplicación, en la seccion initialization del mismo, es decir, abajo del todo de la unidad, tienes que añadir:
Tu siguiente pregunta será como usar el punto que hay en el teclado numerico como separador decimal..... te veo venir porque me ha pasado, así que te recomiendo este dichoso separador decimal Saludos |
La franja horaria es GMT +2. Ahora son las 02:18:43. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi