FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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 SQL.Add('UPDATE articulos SET PRECIO1 = ''' + precio.Text + ''''); SQL.Add('WHERE clave = 7507'); ExecSQL; end; en la db se guarda como 1212 ( sin la , ) alguien me puede ayudar? saludos y gracias.. |
#2
|
|||
|
|||
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; |
#3
|
|||
|
|||
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 + ''','); SQL.Add('RFC = ''' + txtRfc.Text+ ''','); SQL.Add('CALLE = '''+ Calle.Text + ''','); SQL.Add('Ciudad = '''+ Ciudad.Text+ ''','); SQL.Add('LOCALIDAD = '''+ localidad.Text + ''','); SQL.Add('ESTADO = '''+ estado.text+ ''','); SQL.Add('CP = ''' + cp.Text + ''','); SQL.Add('DESCUENTO = :Descuento '','); .... ... SQL.Add('LIMITECREDITO = :Credito '','); SQL.Add('precio = :Precio ' ); SQL.Add('WHERE clave = ' + IntToStr(iClave)); ParamByName('Descuento').AsString := FloatToStr(txtDescuento.Value); ParamByName('Credito').AsString := FloatToStr(txtCredito.Value); ParamByName('Precio').AsString := FloatToStr(txtPrecio.Value); ExecSQL; Close; saludos |
#4
|
|||
|
|||
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 |
#5
|
|||
|
|||
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 |
#6
|
|||
|
|||
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 |
|
|
|