problemas con zupdatesql!
#1
Escrito 24 junio 2011 - 07:38
primer posteo de mi parte pero muchas lecturas! - tengo un problema con zupdatesql y lazarus , el problema especifico es que al hacer update con zupdatesql algunas veces me actualiza con un numero erroneo o se me modifica la posicion de la fila pero no siempre ocurre muy parecido ya me habia pasado con delphi no se si es un error de mi parte o que! - uso debian 64 bits con firebird! cualquier opinion de lo que puede ser se agracede!
#2
Escrito 24 junio 2011 - 09:42
Preguntas:
Que version de Zeos tienes?
Que version de firebird tienes?
Cual es codigo que utilizas para realizar el update?
#3
Escrito 24 junio 2011 - 10:18
Estoy usando la ultima version testing en snapshot de zeos - firebird 2.5 - lazarus 0.9.30 para hacer el update uso update tabla1 set dato1 = :dato1 where dato2 = :old_dato2 , es decir algo basico, tambien despues de abrir el query hago un refresh donde hago un select order by un numero incremental que hago con un trigger after update y solo tengo campos persistentes en el dbgrid no se que puede ser el error. se les ocurre algo que puede ser ? muchas gracias!
#4
Escrito 25 junio 2011 - 10:40
Respecto a que se modifica la posicion en la fila es debido al trigger after update, lo veo como el comportamiento normal, no se que esperas de eso porque no entendi mucho
#5
Escrito 25 junio 2011 - 08:22
ya encontre el posible error pero no puedo probarlo ahora pero creo que es eso! el error puede ser que al hacer el sql modify lo hice de esta manera (update tabla1 set dato1 = :new_dato1 where dato2 = :old_dato2) es decir puse :new_dato1 y creo que ese es el motivo del error lo pruebo y aviso!
saludos!
#6
Escrito 28 junio 2011 - 05:55
luego de probar el resultado no fue el esperado ya que siguieron los problemas con los parametros! - a los sql los paso en tiempo de ejecucion y es asi :
zupdatesql1.InsertSQL.Text:='insert into '+usuario+' select * from '+ 'productos where articulo = :articulo'; zupdatesql1.ModifySQL.Text:='update '+usuario+' set cantidad = '+ ':cantidad where articulo = :OLD_articulo'; zupdatesql1.RefreshSQL.Text:='select articulo,detalle,cantidad,'+ 'precio,imptotal from '+usuario+' order by con desc';
los paso despues de conectarse el usuario! no se que puede ser! la query no tiene campos calculados para dar mas info cached update en false y un monton de dudas sobre el origen del problema - recuerdo el problema es que al pasar una cantidad este algunas veces me pasa otra cantidad del tipeado! cualquier respuesta se agradece!
#7
Escrito 28 junio 2011 - 07:25
#8
Escrito 28 junio 2011 - 07:54
son el mismo valor! es el mismo campo! uso zupdatesql sobre una sola tabla!
saludos!
#9
Escrito 28 junio 2011 - 07:56
hola!
son el mismo valor! es el mismo campo! uso zupdatesql sobre una sola tabla!
saludos!
Pues si ese es el caso, estás pasando a los parámetros el mismo valor?, muestranos donde pasas los parámetros.
Saludos.
#10
Escrito 28 junio 2011 - 08:12
zupdatesql1.ModifySQL.Text:='update '+usuario+' set cantidad = '+ ':cantidad where articulo = :OLD_articulo';
- articulo hace referencia al articulo de la tabla y old_articulo es la forma que tiene zupdatesql de identificar la fila que corresponda con el articulo si es que no estoy equivocado -
#11
Escrito 28 junio 2011 - 08:16
zupdatesql1.ParamByName('articulo').value := 'Valor'; zupdatesql1.ParamByName('OLD_articulo').value := 'Valor';
Saludos.
#12
Escrito 28 junio 2011 - 08:20
lo uso como te genera el sql zupdatesql
#13
Escrito 28 junio 2011 - 08:56
#14
Escrito 28 junio 2011 - 09:25
lo unico que hice con zupdatesql es poner en zupdatesql esto:
zupdatesql1.ModifySQL.Text:='update '+usuario+' set cantidad = '+ ':cantidad where articulo = :OLD_articulo';
y cuando modifico cantidad ej: articulo 1 , detalle 'lala' , cantidad 2 ,precio 12.99
en este caso 2 por 3 algunas veces no siempre no me actualiza bien y me actualiza con otro numero por lo general con un numero que se ingreso anteriormente ej: en vez de 3 me cambia por 5 utilizo zquery relacionado con zupdatesql , repito no siempre ocurre eso, siempre anda bien hasta que pasa
de repente! no se si es un error del componente en todo caso pasen una idea de usar otro componente que no sea zupdatesql!
saludos!
#15
Escrito 28 junio 2011 - 09:34
#16
Escrito 28 junio 2011 - 09:45
lo unico que hice con zupdatesql es poner en zupdatesql esto:
zupdatesql1.ModifySQL.Text:='update '+usuario+' set cantidad = '+
':cantidad where articulo = :OLD_articulo';
Haber si entiendo, estás tratando de actualizar el campo "cantidad" de una tabla de nombre "usuario" con un el valor de un parámetro de nombre "cantidad" en donde otro campo de nombre "articulo" es igual al valor antiguo de este? Estás seguro que es justo eso lo que persigues?
#17
Escrito 28 junio 2011 - 12:56
saludos!
#18
Escrito 28 junio 2011 - 01:09
Saludos
#19
Escrito 28 junio 2011 - 01:17
no sabia de ese comportamiento pense que el error venia de mi parte pero por mas que buscaba no encontraba el error, como dije antes en delphi tambien me habia ocurrido!
muchisimas gracias wilson!!
y a todos los que se molestaron en encontrar la solucion!