Ir al contenido


Foto

problemas con zupdatesql!


  • Por favor identifícate para responder
18 respuestas en este tema

#1 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 24 junio 2011 - 07:38

hola delphiaccess!

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!
  • 0

#2 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 24 junio 2011 - 09:42

bienvenido al foro.


Preguntas:
Que version de Zeos tienes?
Que version de firebird tienes?
Cual es codigo que utilizas para  realizar el update?


  • 0

#3 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 24 junio 2011 - 10:18

Gracias luk2009!

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!
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 25 junio 2011 - 10:40

Si se actualiza un numero erroneo es debido a la forma que pasas los parametros, si puedes mostrar como lo haces?


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
  • 0

#5 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 25 junio 2011 - 08:22

Gracias eduarcol por tu ayuda!

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!
  • 0

#6 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 28 junio 2011 - 05:55

hola amigos!

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 :



delphi
  1. zupdatesql1.InsertSQL.Text:='insert into '+usuario+' select * from '+
  2. 'productos where articulo = :articulo';
  3. zupdatesql1.ModifySQL.Text:='update '+usuario+' set cantidad = '+
  4. ':cantidad where articulo = :OLD_articulo';
  5. zupdatesql1.RefreshSQL.Text:='select articulo,detalle,cantidad,'+
  6. '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!
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 28 junio 2011 - 07:25

Pregunta, el parámetro :OLD_articulo y :articulos son el mismo valor o son diferentes?
  • 0

#8 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 28 junio 2011 - 07:54

hola!

son el mismo valor! es el mismo campo! uso zupdatesql sobre una sola tabla!

saludos!
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

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.
  • 0

#10 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 28 junio 2011 - 08:12

el error esta aqui cuando modifico cantidad:



delphi
  1. zupdatesql1.ModifySQL.Text:='update '+usuario+' set cantidad = '+
  2. ':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 -
  • 0

#11 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 28 junio 2011 - 08:16

mmm, NO entendí esa última parte, pero me refería que si hacías algo como esto:



delphi
  1. zupdatesql1.ParamByName('articulo').value := 'Valor';
  2. zupdatesql1.ParamByName('OLD_articulo').value := 'Valor';



Saludos.
  • 0

#12 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 28 junio 2011 - 08:20

no no! perdon entendi mal!

lo uso como te genera el sql zupdatesql
  • 0

#13 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 28 junio 2011 - 08:56

La verdad que por mas que trato no logro entender lo que te sucede, podrias colocar un ejemplo de lo que esperas y de lo que obtienes a ver si descubro el porq?
  • 0

#14 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 28 junio 2011 - 09:25

hola!

lo unico que hice con zupdatesql es poner en zupdatesql esto:


delphi
  1. zupdatesql1.ModifySQL.Text:='update '+usuario+' set cantidad = '+
  2. ':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!
  • 0

#15 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 28 junio 2011 - 09:34

Hazlo en un ZQuery a ver si mejora ese comportamiento, no habia leido que estas con el update, la verda nunca he trabajado con el
  • 0

#16 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

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?
  • 0

#17 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 28 junio 2011 - 12:56

hola wilson! si es eso lo que quiero y el resultado que obtengo es correcto pero el comportamiento no ya que en determinado momento el valor que se pasa en cantidad sobre la dbgrid algunas veces me cambia de valor como lo explique anteriormente! no se cual es el problema! cualquier respuesta se agradece!

saludos!
  • 0

#18 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 28 junio 2011 - 01:09

Ya entiendo, muchas veces ese comportamiento erróneo  ocurre cuando editamos directamente sobre el Dbgrid y llamamos al método Post o el procedimento que actualiza, con el foco todavía en la celda, entonces no alcanza a tomar el nuevo valor sinó que deja  el valor viejo (eso ya me ha pasado), la solución es asegurarse que antes de llamar a Post se haya salido completamente del dbGrid (que este pierda el foco), o si el tipo de tu aplicación lo permite, editar el registro  activo del dbgrid  en un formulario modal aparte.

Saludos
  • 0

#19 lnufish

lnufish

    Member

  • Miembros
  • PipPip
  • 13 mensajes

Escrito 28 junio 2011 - 01:17

graciasss wilson!!!

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!
  • 0




IP.Board spam blocked by CleanTalk.