Sign in Join

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

Mailing lists / lazarus-es / 2009-08

Problemilla con DeleteSQL

14 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

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

Giuseppe Luigi Punzi Ruiz

Hola a todos,

En una query tengo:
DELETE FROM CLIENTES
WHERE IDCLIENTE = :OLD_IDCLIENTE

Luego, en un form, tengo un bot�n "Eliminar" que hace: if MessageDlg('�Desea eliminar el cliente seleccionado?',mtWarning, mbOkCancel, 0) = mrOk then

	dmDatos.queryClientes.Delete;
Y en el bot�n que cierra el form:
   dmDatos.queryClientes.ApplyUpdates();
   dmDatos.Transacciones.Commit;
   Self.Close;

Si borro s�lo un registro y cierro el form, no hay problema, pero cuando borro m�s de uno y lo cierro, me salta una excepci�n: EDatabaseError
'No delete query specified and failed to generate one. (No fields for inclusion in where statement found)'.

No puedo dejar marcados para eliminar m�s de un registro antes de hacer el commit?

BBDD: Firebird

Lazarus 0.9.29 r21479M FPC 2.2.4 i386-darwin-carbon (beta)

Un saludo.

Giuseppe Luigi Punzi Ruiz
Blog: http://www.lordzealon.com
Twitter & Skype & GoogleTalk accounts: glpunzi

Reply by email

JoshyFun
to Giuseppe Luigi Punzi Ruiz

Hello Giuseppe,

Saturday, August 29, 2009, 1:39:53 PM, you wrote:

GLPR> En una query tengo:
GLPR> DELETE FROM CLIENTES
GLPR> WHERE IDCLIENTE = :OLD_IDCLIENTE
[...]
GLPR> Si borro s�lo un registro y cierro el form, no hay problema, pero GLPR> cuando borro m�s de uno y lo cierro, me salta una excepci�n: GLPR> EDatabaseError
GLPR> 'No delete query specified and failed to generate one. (No fields for GLPR> inclusion in where statement found)'.

Yo dec�a "varios errores del sqldb" en otro mensaje :) ese es uno de ellos:

http://bugs.freepascal.org/view.php?id=14331

Best regards, JoshyFun

Reply by email

Ismael L. Donis García
to JoshyFun

Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, pero en lo personal eso lo pondr�a dentro de un procedimiento almacenado en la BD y lo mandar�a a ejecutar desde el programa, creo que de esa forma no tendr�n ese tipo de problemas.

Saludos a todos
=========
|| ISMAEL ||
=========

Earlier message 32 lines
----- Original Message ----- From: "JoshyFun" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Saturday, August 29, 2009 9:46 AM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL Hello Giuseppe, Saturday, August 29, 2009, 1:39:53 PM, you wrote: GLPR> En una query tengo: GLPR> DELETE FROM CLIENTES GLPR> WHERE IDCLIENTE = :OLD_IDCLIENTE [...] GLPR> Si borro s�lo un registro y cierro el form, no hay problema, pero GLPR> cuando borro m�s de uno y lo cierro, me salta una excepci�n: GLPR> EDatabaseError GLPR> 'No delete query specified and failed to generate one. (No fields for GLPR> inclusion in where statement found)'. Yo dec�a "varios errores del sqldb" en otro mensaje :) ese es uno de ellos: http://bugs.freepascal.org/view.php?id=14331 -- Best regards, JoshyFun

Reply by email

Giuseppe Luigi Punzi
to JoshyFun: ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, ILDG>…

El lun, 31-08-2009 a las 18:24 +0200, JoshyFun escribi�:

Show quoted text 14 lines
Hello Ismael, Monday, August 31, 2009, 3:26:48 PM, you wrote: ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, pero en ILDG> lo personal eso lo pondr�a dentro de un procedimiento almacenado en la BD y ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa forma no tendr�n ILDG> ese tipo de problemas. No puedes porque es un objeto visual, o sea, que es el propio objeto el que realiza el borrado del registro(s). Si lo haces mediante un procedimiento almacenado, o a mano, tendr�s que recargar el objeto visual constantemente para mostrar las modificaciones (borrado).

Adem�s, que, es complicarse la cabeza para un simple delete. Llamarme anticuado del dBase si quer�is :D
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20090831/a866cfc3/attachment.html>

Reply by email

JoshyFun
to Ismael L. Donis García: Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, vengo de…

Hello Ismael,

Monday, August 31, 2009, 3:26:48 PM, you wrote:

ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, pero en ILDG> lo personal eso lo pondr�a dentro de un procedimiento almacenado en la BD y ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa forma no tendr�n ILDG> ese tipo de problemas.

No puedes porque es un objeto visual, o sea, que es el propio objeto el que realiza el borrado del registro(s). Si lo haces mediante un procedimiento almacenado, o a mano, tendr�s que recargar el objeto visual constantemente para mostrar las modificaciones (borrado).

Best regards, JoshyFun

Reply by email

Ismael L. Donis García
to JoshyFun

Una pregunta:

Y dicho objeto no tiene una propiedad que te permita borrar una fila?

Ser�a mandar a ejecutar el procedimiento el cual te devuelva un valor, el cual en caso de ser afirmativo ejecutar el borrado de la fila.

Disculpen, pero estoy hablando sin saber si el objeto tiene la propiedad que te permita borrar la fila.

Saludos reiterados
=========
|| ISMAEL ||
=========

Earlier message 32 lines
----- Original Message ----- From: "JoshyFun" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Monday, August 31, 2009 12:24 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL Hello Ismael, Monday, August 31, 2009, 3:26:48 PM, you wrote: ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, pero en ILDG> lo personal eso lo pondr�a dentro de un procedimiento almacenado en la BD y ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa forma no tendr�n ILDG> ese tipo de problemas. No puedes porque es un objeto visual, o sea, que es el propio objeto el que realiza el borrado del registro(s). Si lo haces mediante un procedimiento almacenado, o a mano, tendr�s que recargar el objeto visual constantemente para mostrar las modificaciones (borrado). -- Best regards, JoshyFun

Reply by email

Ismael L. Donis García
to Giuseppe Luigi Punzi: El lun, 31-08-2009 a las 18:24 +0200, JoshyFun escribi�: Adem�s, que, es complicarse…

No, no te llamar�a anticuado, todos aqu� estamos para aprender, hasta el que tenga m�s conocimientos, pero si debemos utilizar el potencial de los motor de datos, es hora de irse olvidando de dbase.

Regards
=========
|| ISMAEL ||
=========

Earlier message 29 lines
----- Original Message ----- From: Giuseppe Luigi Punzi To: Spanish version of Lazarus List Sent: Monday, August 31, 2009 12:23 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL El lun, 31-08-2009 a las 18:24 +0200, JoshyFun escribi�: Hello Ismael, Monday, August 31, 2009, 3:26:48 PM, you wrote: ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, pero en ILDG> lo personal eso lo pondr�a dentro de un procedimiento almacenado en la BD y ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa forma no tendr�n ILDG> ese tipo de problemas. No puedes porque es un objeto visual, o sea, que es el propio objeto el que realiza el borrado del registro(s). Si lo haces mediante un procedimiento almacenado, o a mano, tendr�s que recargar el objeto visual constantemente para mostrar las modificaciones (borrado). Adem�s, que, es complicarse la cabeza para un simple delete. Llamarme anticuado del dBase si quer�is :D ------------------------------------------------------------------------------

Reply by email

Giuseppe Luigi Punzi Ruiz
to Ismael L. Donis García: Una pregunta: Y dicho objeto no tiene una propiedad que te permita borrar una fila?…

Hola Isamel.

El Objeto TSQLQuery contiene en su DeleteSQL: "DELETE * FROM CLIENTES WHERE :IDCLIENTE = :OLD_IDCLIENTE

Es lanzada al hacer SQLQuery1.Delete, que precisamente, elimina el registro activo en ese momento (seleccionado en el Grid, y conectado cno un DataSource).

El 31/08/2009, a las 19:10, Ismael L. Donis Garc�a escribi�:

Show quoted text 57 lines
Una pregunta: Y dicho objeto no tiene una propiedad que te permita borrar una fila? Ser�a mandar a ejecutar el procedimiento el cual te devuelva un valor, el cual en caso de ser afirmativo ejecutar el borrado de la fila. Disculpen, pero estoy hablando sin saber si el objeto tiene la propiedad que te permita borrar la fila. Saludos reiterados ========= || ISMAEL || ========= ----- Original Message ----- From: "JoshyFun" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org > Sent: Monday, August 31, 2009 12:24 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL Hello Ismael, Monday, August 31, 2009, 3:26:48 PM, you wrote: ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, pero en ILDG> lo personal eso lo pondr�a dentro de un procedimiento almacenado en la BD y ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa forma no tendr�n ILDG> ese tipo de problemas. No puedes porque es un objeto visual, o sea, que es el propio objeto el que realiza el borrado del registro(s). Si lo haces mediante un procedimiento almacenado, o a mano, tendr�s que recargar el objeto visual constantemente para mostrar las modificaciones (borrado). -- Best regards, JoshyFun _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Giuseppe Luigi Punzi Ruiz
Blog: http://www.lordzealon.com
Twitter & Skype & GoogleTalk accounts: glpunzi

Reply by email

Giuseppe Luigi Punzi Ruiz
to Ismael L. Donis García: No, no te llamar�a anticuado, todos aqu� estamos para aprender, hasta el que tenga…

Si, est� claro, pero en mi humilde opini�n, los Stored Procedures deben usarse cuando realmente son necesarios. No creo que lo sea, para hacer simples deletes en tablas. Es m�s costoso preparar los componentes, par�metros y dem�s, que lanzar el SQL directamente :P

El 31/08/2009, a las 19:13, Ismael L. Donis Garc�a escribi�:

Show quoted text 46 lines
No, no te llamar�a anticuado, todos aqu� estamos para aprender, hasta el que tenga m�s conocimientos, pero si debemos utilizar el potencial de los motor de datos, es hora de irse olvidando de dbase. Regards ========= || ISMAEL || ========= ----- Original Message ----- From: Giuseppe Luigi Punzi To: Spanish version of Lazarus List Sent: Monday, August 31, 2009 12:23 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL El lun, 31-08-2009 a las 18:24 +0200, JoshyFun escribi�: > > Hello Ismael, > > Monday, August 31, 2009, 3:26:48 PM, you wrote: > > ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni > de delphi, > ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos > lenguajes, pero en > ILDG> lo personal eso lo pondr�a dentro de un procedimiento > almacenado en la BD y > ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa > forma no tendr�n > ILDG> ese tipo de problemas. > > No puedes porque es un objeto visual, o sea, que es el propio objeto > el que realiza el borrado del registro(s). Si lo haces mediante un > procedimiento almacenado, o a mano, tendr�s que recargar el objeto > visual constantemente para mostrar las modificaciones (borrado). Adem�s, que, es complicarse la cabeza para un simple delete. Llamarme anticuado del dBase si quer�is :D _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Giuseppe Luigi Punzi Ruiz
Blog: http://www.lordzealon.com
Twitter & Skype & GoogleTalk accounts: glpunzi

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20090831/f2fb87ff/attachment-0001.html>

Reply by email

Ismael L. Donis García
to Giuseppe Luigi Punzi: El lun, 31-08-2009 a las 18:24 +0200, JoshyFun escribi�: Adem�s, que, es complicarse…

Es solo un problema de h�bitos, si lo lanzas directamente de todos modos creo que debes comprobar si lo borr�, ya que otro usuario lo pudo haber modificado o eliminado antes.

Para mi todo lo que pueda hacer el motor y validar en el es mejor que dej�rselo al cliente, talvez no est�s adaptado a eso, pero si lo haces ver�s que no es m�s dif�cil, ni con m�s c�digo tampoco, aunque como te dije antes no se nada de delphi. Incluso, ni hoy lo pude montar en linux ya que tuve que hacer otras gestiones y solo lo he mirado un rato en windows ya que quiero comenzar a probarlo en linux que es mi sistema principal de trabajo.

saludos reiterados
=========
|| ISMAEL ||
=========

Earlier message 51 lines
----- Original Message ----- From: Giuseppe Luigi Punzi Ruiz To: Spanish version of Lazarus List Sent: Monday, August 31, 2009 3:06 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL Si, est� claro, pero en mi humilde opini�n, los Stored Procedures deben usarse cuando realmente son necesarios. No creo que lo sea, para hacer simples deletes en tablas. Es m�s costoso preparar los componentes, par�metros y dem�s, que lanzar el SQL directamente :P El 31/08/2009, a las 19:13, Ismael L. Donis Garc�a escribi�: No, no te llamar�a anticuado, todos aqu� estamos para aprender, hasta el que tenga m�s conocimientos, pero si debemos utilizar el potencial de los motor de datos, es hora de irse olvidando de dbase. Regards ========= || ISMAEL || ========= ----- Original Message ----- From: Giuseppe Luigi Punzi To: Spanish version of Lazarus List Sent: Monday, August 31, 2009 12:23 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL El lun, 31-08-2009 a las 18:24 +0200, JoshyFun escribi�: Hello Ismael, Monday, August 31, 2009, 3:26:48 PM, you wrote: ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de delphi, ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, pero en ILDG> lo personal eso lo pondr�a dentro de un procedimiento almacenado en la BD y ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa forma no tendr�n ILDG> ese tipo de problemas. No puedes porque es un objeto visual, o sea, que es el propio objeto el que realiza el borrado del registro(s). Si lo haces mediante un procedimiento almacenado, o a mano, tendr�s que recargar el objeto visual constantemente para mostrar las modificaciones (borrado). Adem�s, que, es complicarse la cabeza para un simple delete. Llamarme anticuado del dBase si quer�is :D --------------------------------------------------------------------------

Reply by email

Ismael L. Donis García
to Ismael L. Donis García: Una pregunta: Y dicho objeto no tiene una propiedad que te permita borrar una fila?…

Ok, no digo m�s porque primero tendr�a que ver su funcionamiento, pero dicen que si ejecutas un solo barrado si funciona, entonces porque no prueban comenzar una transacci�n antes del delete y despu�s de esta hacer un commit.

saludos reiterados
=========
|| ISMAEL ||
=========

Earlier message 87 lines
----- Original Message ----- From: "Giuseppe Luigi Punzi Ruiz" <glpunzi en lordzealon.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Monday, August 31, 2009 3:00 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL Hola Isamel. El Objeto TSQLQuery contiene en su DeleteSQL: "DELETE * FROM CLIENTES WHERE :IDCLIENTE = :OLD_IDCLIENTE Es lanzada al hacer SQLQuery1.Delete, que precisamente, elimina el registro activo en ese momento (seleccionado en el Grid, y conectado cno un DataSource). El 31/08/2009, a las 19:10, Ismael L. Donis Garc�a escribi�: > Una pregunta: > > Y dicho objeto no tiene una propiedad que te permita borrar una fila? > > Ser�a mandar a ejecutar el procedimiento el cual te devuelva un valor, el > cual en caso de ser afirmativo ejecutar el borrado de la fila. > > Disculpen, pero estoy hablando sin saber si el objeto tiene la propiedad > que te permita borrar la fila. > > Saludos reiterados > ========= > || ISMAEL || > ========= > ----- Original Message ----- From: "JoshyFun" <joshyfun en gmail.com> > To: "Spanish version of Lazarus List" > <lazarus-es en lists.lazarus.freepascal.org > > > Sent: Monday, August 31, 2009 12:24 PM > Subject: Re: [Lazarus-es] Problemilla con DeleteSQL > > > Hello Ismael, > > Monday, August 31, 2009, 3:26:48 PM, you wrote: > > ILDG> Disculpen si digo algo mal porque yo no se nada de L�zaro ni de > delphi, > ILDG> vengo de Microsoft, solo reci�n quiero comenzar en estos lenguajes, > pero en > ILDG> lo personal eso lo pondr�a dentro de un procedimiento almacenado en > la BD y > ILDG> lo mandar�a a ejecutar desde el programa, creo que de esa forma no > tendr�n > ILDG> ese tipo de problemas. > > No puedes porque es un objeto visual, o sea, que es el propio objeto > el que realiza el borrado del registro(s). Si lo haces mediante un > procedimiento almacenado, o a mano, tendr�s que recargar el objeto > visual constantemente para mostrar las modificaciones (borrado). > > -- > Best regards, > JoshyFun > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es Giuseppe Luigi Punzi Ruiz Blog: http://www.lordzealon.com Twitter & Skype & GoogleTalk accounts: glpunzi

Reply by email

JoshyFun
to Ismael L. Donis García: Una pregunta: Y dicho objeto no tiene una propiedad que te permita borrar una fila?…

Hello Ismael,

Monday, August 31, 2009, 7:10:10 PM, you wrote:

ILDG> Una pregunta:
ILDG> Y dicho objeto no tiene una propiedad que te permita borrar una fila? ILDG> Ser�a mandar a ejecutar el procedimiento el cual te devuelva un valor, el ILDG> cual en caso de ser afirmativo ejecutar el borrado de la fila. ILDG> Disculpen, pero estoy hablando sin saber si el objeto tiene la propiedad que ILDG> te permita borrar la fila.

A ver, las operaciones sobre un dataset (conjunto de registros) se "cachean", esto es, en vez de que cada vez que haces algo sobre el dataset, se actulice la base de datos, todas las modificaciones se van almacenando temporalmente, una vez que has terminado la edici�n, borrado, inclusi�n, invocas un "ApplyUpdates" que lo que hace es revisar todas las modificaciones que has pedido y tratar de empaquetarlas lo mejor posible y enviarlas a la base de datos. El problema en este caso es que si has hecho m�s de una inserci�n o borrado el procedimiento de "empaquetado" falla y no se realiza ninguna debido al error para mantener estable la base de datos. Por eso no hay soluci�n m�s que realizar todas las operaciones de una en una, lo cual es lent�simo y visualmente horroroso.

Best regards, JoshyFun

Reply by email

JoshyFun
to Ismael L. Donis García: Es solo un problema de h�bitos, si lo lanzas directamente de todos modos creo que debes…

Hello Ismael,

Monday, August 31, 2009, 10:53:05 PM, you wrote:

ILDG> Es solo un problema de h�bitos, si lo lanzas directamente ILDG> de todos modos creo que debes comprobar si lo borr�, ya que otro ILDG> usuario lo pudo haber modificado o eliminado antes.

Eso lo comprueba el commit, de hecho es su trabajo. Si un registro ha sido modificado por otro usuario o borrado y el commit intenta una modificaci�n dar� error debido a que el estado del dataset es inconsistente con la base de datos, en el caso de borrado no ya que si lo ha borrado otro ya te ha hecho el trabajo.

No puedes hacerlo de uno en uno (bueno en realidad si puedes) ya que a cada borrado le seguir�a un commit lo cual descarta el dataset actual y tendr�as que recargar el sql completo. El caso es que si est�s editando datos en un datagrid y borras un registro con su commit correspondiente funciona, pero tu linea de edici�n pasa a ser la primera (pierdes la posici�n dentro del dataset), a parte de que vuelves a pedirle la base de datos que te vuelva a enviar todos los datos que ya tienes lo cual es extremadamente ineficiente y a parte que visualmente ser�a terrible con un parpadeo de segundos cada vez que borras un registro, despu�s tener que explorar todo el dataset registro a registro para posicionarte donde estabas editando, m�s o menos, ya que el estado de la base de datos puede haber cambiado y el registro 185 puedes estar ahora 2000 lineas m�s abajo (por ejemplo).

Si vienes de MS C++ o similares estar�s acostumbrado a hacerte los datagrid a mano, poniendo tu la sincronizaci�n visual con los datos, pero entonces cosas como el datagrid en Delphi o en Lazarus no tendr�an sentido ya que justo lo que eliminan es ese trabajo repetitivo de crear grids de edici�n.

Best regards, JoshyFun

Reply by email

Ismael L. Donis García
to Giuseppe Luigi Punzi: El lun, 31-08-2009 a las 18:24 +0200, JoshyFun escribi�: Adem�s, que, es complicarse…

1 Mill�n de gracias por la explicaci�n.

Por lo que as explicado, se le deber�a pasar el error al desarrollador del componente.

Gracias reiteradas.
=========
|| ISMAEL ||
=========

Earlier message 47 lines
----- Original Message ----- From: "JoshyFun" <joshyfun en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Monday, August 31, 2009 6:37 PM Subject: Re: [Lazarus-es] Problemilla con DeleteSQL Hello Ismael, Monday, August 31, 2009, 10:53:05 PM, you wrote: ILDG> Es solo un problema de h�bitos, si lo lanzas directamente ILDG> de todos modos creo que debes comprobar si lo borr�, ya que otro ILDG> usuario lo pudo haber modificado o eliminado antes. Eso lo comprueba el commit, de hecho es su trabajo. Si un registro ha sido modificado por otro usuario o borrado y el commit intenta una modificaci�n dar� error debido a que el estado del dataset es inconsistente con la base de datos, en el caso de borrado no ya que si lo ha borrado otro ya te ha hecho el trabajo. No puedes hacerlo de uno en uno (bueno en realidad si puedes) ya que a cada borrado le seguir�a un commit lo cual descarta el dataset actual y tendr�as que recargar el sql completo. El caso es que si est�s editando datos en un datagrid y borras un registro con su commit correspondiente funciona, pero tu linea de edici�n pasa a ser la primera (pierdes la posici�n dentro del dataset), a parte de que vuelves a pedirle la base de datos que te vuelva a enviar todos los datos que ya tienes lo cual es extremadamente ineficiente y a parte que visualmente ser�a terrible con un parpadeo de segundos cada vez que borras un registro, despu�s tener que explorar todo el dataset registro a registro para posicionarte donde estabas editando, m�s o menos, ya que el estado de la base de datos puede haber cambiado y el registro 185 puedes estar ahora 2000 lineas m�s abajo (por ejemplo). Si vienes de MS C++ o similares estar�s acostumbrado a hacerte los datagrid a mano, poniendo tu la sincronizaci�n visual con los datos, pero entonces cosas como el datagrid en Delphi o en Lazarus no tendr�an sentido ya que justo lo que eliminan es ese trabajo repetitivo de crear grids de edici�n. -- Best regards, JoshyFun

Reply by email