Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   User abort con applyupdates (https://www.clubdelphi.com/foros/showthread.php?t=3385)

erickperez6 04-09-2003 16:26:54

User abort con applyupdates
 
Saludos !

estoy utilizando un IBquery conectado a un IBUpdateSql, utilizo el cachedupdate en true, la tabla1 con que estoy trabajando en los componentes ya mencionados tiene una referencia foranea, es decir, que no puedo eliminar un registro si tiene una referencia en la tabla2.

El problema es el siguiente, si mantengo desactivado el cachedupdate, al momento de eliminar el registro, si este tiene una referencia en la tabla2, interbase me arroja el error tipico cuando se trata de violar una referencia, todo hasta aqui va muy bien, pero cuando activo el cachedupdate a true (es la manera en la cual deseo trabajar), al momento de borrar el mismo registro no me arroja ningun error, pero al momento de postear el applyupdates me arroja el error de "User abort" y ningun cambio que haya hecho a otro registro se aplica, ni nada de nada !

Alguna manera de evitar esto utilizando el cachedupdate en true ?

Gracias

kinobi 04-09-2003 16:33:03

Hola,

en principio parace un problema en el lado cliente (por el uso de actualizaciones en caché), así que muevo el hilo desde el foro "Interbase y Firebird" al foro "Conexión con bases de datos".

Saludos.

andres1569 08-09-2003 10:23:48

Hola:

Evidentemente, el usar CachedUpdates hace que la detección de errores que dejamos al servidor, como en este caso, se posponga al momento de hacer ApplyUpdates.

¿Soluciones? Se me ocurre o bien que esa comprobación de clave foránea la hagas desde la aplicación lanzando una consulta, o bien que interceptes el evento OnUpdateError de la tabla correspondiente. Ahí puedes chequear el problema y "desborrar" el registro involucrado (creo que para ello te puede servir el método RevertRecord) y pones, en dicho evento, UpdateAction a uaRetry para que vuelva a intentarse la grabación de lo que tenías en la cache, de esa forma el resto de modificaciones no se ven perjudicadas.

Saludos


La franja horaria es GMT +2. Ahora son las 11:34:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi