Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2013-10

error al actualizar tabla

4 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola todos...

tengo un peque�o bug y hace d�as que no doy con la soluci�n.

Uso firbird y componentes zeos.
Tengo una tabla numeros de 1 solo registro, con la numeraci�n de unos tickets internos.

cuando voy a imprimir, tomo el nro, lo actualizo y largo la impresi�n:

           nComp:= tblNumeros.FieldByName('numero').AsInteger;
           tblNumeros.Edit;
           tblNumeros.FieldByName('numero').AsInteger:= nComp + 1;
           tblNumeros.Post;
           tblNumeros.CommitUpdates;
           tblNumeros.ApplyUpdates;
..........

aparece este error al hacer el post

pero lo m�s lindo que no es siempre, es si hago otra cosa antes.

describo mas o menos as�:
form1: tiene un ttable (tblnumeros) que se abre/cierra en en oncreate/onclose...
all� hay un bot�n imprimir pendientes que usa esa tblnumeros. tb hay otro bot�n para agregar pedidos, que llama a form2. Form2 tambi�n tiene un tblNumeros (q se abre/cierra con el oncreate/onclose)

si abro form1, agrego pedido: llamo a form2, imprimo, cierro. retorno a form1, al imprimir pedidos pendientes, ZAS!!

Si NO abro form2 para ingresar ning�n pedido, no da ese error.. es como que la tblnumeros no se haya cerrado, no se.. o se est�n entreverando las 2 tblNumeros!

Bueno, agradezco cq ayuda.. mientras sigo investigando mil gracias de antemano
byeeeeeeeee

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20131001/b822286f/attachment.html> ------------ pr�xima parte ------------
A non-text attachment was scrubbed...
Name: jhbhfcih.png
Type: image/png
Size: 7056 bytes
Desc: no disponible
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20131001/b822286f/attachment.png>

Reply by email

José Mejuto
to Paola Bruccoleri

El 01/10/2013 22:35, Paola Bruccoleri escribi�:

Hola todos... tengo un peque�o bug y hace d�as que no doy con la soluci�n.

[...]

Show quoted text 5 lines
Bueno, agradezco cq ayuda.. mientras sigo investigando mil gracias de antemano byeeeeeeeee

Hola,

Hay m�s de un registro en la tabla que es susceptible de ser actualizado. Me explico, supongamos que tenemos una tabla de este tipo

NOMBRE APELLIDO
------- --------
JUAN GOMEZ
PEPE GARCIA
JUAN GARCIA

Si editamos el segundo registro "PEPE GARCIA" y cambiamos el nombre por "JESUS", Zeos generar� un SQL UPDATE algo parecido a:

UPDATE TABLE Set NOMBRE="JESUS" where APELLIDO="GARCIA";

Lo cual es un problema, ya que hay 2 registros que coinciden con el WHERE, por lo tanto no aplica el "UPDATE" y da ese error.

La soluci�n, identificar cada registro con una clave primaria �nica.

Espero que te ayude.

Reply by email

Paola Bruccoleri
to José Mejuto

Hola Jos�--

Show quoted text 23 lines
Hola, Hay m�s de un registro en la tabla que es susceptible de ser actualizado. Me explico, supongamos que tenemos una tabla de este tipo NOMBRE APELLIDO ------- -------- JUAN GOMEZ PEPE GARCIA JUAN GARCIA Si editamos el segundo registro "PEPE GARCIA" y cambiamos el nombre por "JESUS", Zeos generar� un SQL UPDATE algo parecido a: UPDATE TABLE Set NOMBRE="JESUS" where APELLIDO="GARCIA"; Lo cual es un problema, ya que hay 2 registros que coinciden con el WHERE, por lo tanto no aplica el "UPDATE" y da ese error. La soluci�n, identificar cada registro con una clave primaria �nica. Espero que te ayude.

si, ya me he le�do tooodos los foros q he encontrado por ah� sobre esto... tienes raz�n con lo que dices, ya que zeos ahora est� un poco denso con esto de q todas tus tablas tengan un PK... pero no aplica en mi caso porque esa tabla SOLO tiene un registro y NUNCA va a tener m�s.. no existn APENNDs a esa tabla..
el problema viene porque se ve que del proceso anterior queda mal el validateupdatecount y etc..

algo de eso ac�:
http://zeoslib.sourceforge.net/viewtopic.php?f=39&t=3774

la cosa que le puse un ID a esa tabla y ya no joroba m�s. de todas formas, creo que sacar� esa forma de actualizar el n�mero y usar� un store procedure...

muchas gracias!

Reply by email

José Mejuto
to Paola Bruccoleri

El 02/10/2013 15:07, Paola Bruccoleri escribi�:

Show quoted text 15 lines
si, ya me he le�do tooodos los foros q he encontrado por ah� sobre esto... tienes raz�n con lo que dices, ya que zeos ahora est� un poco denso con esto de q todas tus tablas tengan un PK... pero no aplica en mi caso porque esa tabla SOLO tiene un registro y NUNCA va a tener m�s.. no existn APENNDs a esa tabla.. el problema viene porque se ve que del proceso anterior queda mal el validateupdatecount y etc.. algo de eso ac�: http://zeoslib.sourceforge.net/viewtopic.php?f=39&t=3774 la cosa que le puse un ID a esa tabla y ya no joroba m�s. de todas formas, creo que sacar� esa forma de actualizar el n�mero y usar� un store procedure...

Hola,

No, el problema es el mismo. Zeos no quiere actualizar la tabla por que no puede garantizar que s�lo 1 registro ser� modificado. Al generar el update de antes comprueba que al menos uno de los registros del WHERE sea un registro �nico (Via PK o Unique Index), si no lo es,no realiza el update y da el error. No es que falle el update, es que no lo realiza por que no puede garantizar que no actualizar� m�s de lo debido, o un registro que no es el esperado (pudo haber cambios en otro computador generando un registro diferente que ahora coincide, pero que antes, cuando leimos el recordset, no coincid�a).

Reply by email