No se encuentra la fila para la actualización

29/10/2009 - 18:32 por José Antonio Muñoz | Informe spam
Hola al grupo,

tengo una aplicación diseñada con delphi, ado y sql server. Resulta que uno
de los procesos de edición de datos accede a una tabla (tabla1) que además
tiene asignado un trigger con la intrucción: UPDATE tabla2 SET valor=1 WHERE
id50. Cuando edito los datos de tabla1 e intento guardar con una
instrucción de ADO se produce un error: "No se encuentra la fila para la
actualización, algunos valores han cambiado desde la última vez que se
leyeron".

Este error NO se produce cuando:

a) elimino el trigger
b) Cuando se actualiza el valor de tabla2 ya que existe el id50, en
cambio si no existe 1250 el valor no se actualiza y se produce el error.

Tabla1 y Tabla2 no tienen nada que salvo el trigger. He desactivado la
anidación de triggers y la recursividad de éstos.

No sé que tiene que ver el error que me da, el trigger y menos la
instrucción que contiene. ¿Acaso el trigger devuelve un error al sistema al
no poder actualizar el valor de la instrucción update y este error se
transforma en otro error en ADO?

Estoy atascado y necesito ayuda.

saludos,
José Antonio Muñoz

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
30/10/2009 - 09:35 | Informe spam
¿Puedes postear el código de ese trigger?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:
Hola al grupo,

tengo una aplicación diseñada con delphi, ado y sql server. Resulta que
uno de los procesos de edición de datos accede a una tabla (tabla1) que
además tiene asignado un trigger con la intrucción: UPDATE tabla2 SET
valor=1 WHERE id50. Cuando edito los datos de tabla1 e intento guardar
con una instrucción de ADO se produce un error: "No se encuentra la fila
para la actualización, algunos valores han cambiado desde la última vez
que se leyeron".

Este error NO se produce cuando:

a) elimino el trigger
b) Cuando se actualiza el valor de tabla2 ya que existe el id50, en
cambio si no existe 1250 el valor no se actualiza y se produce el error.

Tabla1 y Tabla2 no tienen nada que salvo el trigger. He desactivado la
anidación de triggers y la recursividad de éstos.

No sé que tiene que ver el error que me da, el trigger y menos la
instrucción que contiene. ¿Acaso el trigger devuelve un error al sistema
al no poder actualizar el valor de la instrucción update y este error se
transforma en otro error en ADO?

Estoy atascado y necesito ayuda.

saludos,
José Antonio Muñoz


Respuesta Responder a este mensaje
#2 José Antonio Muñoz
30/10/2009 - 10:16 | Informe spam
CREATE TRIGGER Actualizar ON Tabla1 AFTER UPDATE AS
BEGIN
UPDATE Actualizaciones SET Descripcion='1.x 0' WHERE Actualizacion=3
END

Nota: Si el valor 3 existe en el campo "actualización" de la tabla
"actualizaciones" la edición de tabla1 no falla. Pero si el valor 3 no
existe en "actualizaciones" falla.

El mensaje de error es:
No se puede encontrar la fila para su actualización; algunos valores han
cambiado desde la última vez que se leyó.

José Antonio Muñoz.

"Carlos Sacristan" escribió en el mensaje de noticias
news:%
¿Puedes postear el código de ese trigger?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:
Hola al grupo,

tengo una aplicación diseñada con delphi, ado y sql server. Resulta que
uno de los procesos de edición de datos accede a una tabla (tabla1) que
además tiene asignado un trigger con la intrucción: UPDATE tabla2 SET
valor=1 WHERE id50. Cuando edito los datos de tabla1 e intento guardar
con una instrucción de ADO se produce un error: "No se encuentra la fila
para la actualización, algunos valores han cambiado desde la última vez
que se leyeron".

Este error NO se produce cuando:

a) elimino el trigger
b) Cuando se actualiza el valor de tabla2 ya que existe el id50, en
cambio si no existe 1250 el valor no se actualiza y se produce el error.

Tabla1 y Tabla2 no tienen nada que salvo el trigger. He desactivado la
anidación de triggers y la recursividad de éstos.

No sé que tiene que ver el error que me da, el trigger y menos la
instrucción que contiene. ¿Acaso el trigger devuelve un error al sistema
al no poder actualizar el valor de la instrucción update y este error se
transforma en otro error en ADO?

Estoy atascado y necesito ayuda.

saludos,
José Antonio Muñoz





Respuesta Responder a este mensaje
#3 Carlos Sacristan
30/10/2009 - 10:31 | Informe spam
Prueba añadiendo SET NOCOUNT ON antes del UPDATE. Algo como

CREATE TRIGGER Actualizar ON Tabla1 AFTER UPDATE AS
BEGIN
SET NOCOUNT ON

UPDATE Actualizaciones SET Descripcion='1.x 0' WHERE Actualizacion=3

SET NOCOUNT OFF
END

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:%
CREATE TRIGGER Actualizar ON Tabla1 AFTER UPDATE AS
BEGIN
UPDATE Actualizaciones SET Descripcion='1.x 0' WHERE Actualizacion=3
END

Nota: Si el valor 3 existe en el campo "actualización" de la tabla
"actualizaciones" la edición de tabla1 no falla. Pero si el valor 3 no
existe en "actualizaciones" falla.

El mensaje de error es:
No se puede encontrar la fila para su actualización; algunos valores han
cambiado desde la última vez que se leyó.

José Antonio Muñoz.

"Carlos Sacristan" escribió en el mensaje de noticias
news:%
¿Puedes postear el código de ese trigger?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:
Hola al grupo,

tengo una aplicación diseñada con delphi, ado y sql server. Resulta que
uno de los procesos de edición de datos accede a una tabla (tabla1) que
además tiene asignado un trigger con la intrucción: UPDATE tabla2 SET
valor=1 WHERE id50. Cuando edito los datos de tabla1 e intento
guardar con una instrucción de ADO se produce un error: "No se encuentra
la fila para la actualización, algunos valores han cambiado desde la
última vez que se leyeron".

Este error NO se produce cuando:

a) elimino el trigger
b) Cuando se actualiza el valor de tabla2 ya que existe el id50, en
cambio si no existe 1250 el valor no se actualiza y se produce el error.

Tabla1 y Tabla2 no tienen nada que salvo el trigger. He desactivado la
anidación de triggers y la recursividad de éstos.

No sé que tiene que ver el error que me da, el trigger y menos la
instrucción que contiene. ¿Acaso el trigger devuelve un error al sistema
al no poder actualizar el valor de la instrucción update y este error se
transforma en otro error en ADO?

Estoy atascado y necesito ayuda.

saludos,
José Antonio Muñoz








Respuesta Responder a este mensaje
#4 José Antonio Muñoz
30/10/2009 - 11:27 | Informe spam
Ha funcionado, muchísimas gracias.

No sabes tú las vueltas que le he dado al problema.

Que sería de nosotros, los programadores, si no tuvieramos a gente como
vosotros para solucionar problemas de forma desinteresada.

saludos,
José Antonio Muñoz.

"Carlos Sacristan" escribió en el mensaje de noticias
news:
Prueba añadiendo SET NOCOUNT ON antes del UPDATE. Algo como

CREATE TRIGGER Actualizar ON Tabla1 AFTER UPDATE AS
BEGIN
SET NOCOUNT ON

UPDATE Actualizaciones SET Descripcion='1.x 0' WHERE Actualizacion=3

SET NOCOUNT OFF
END

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:%
CREATE TRIGGER Actualizar ON Tabla1 AFTER UPDATE AS
BEGIN
UPDATE Actualizaciones SET Descripcion='1.x 0' WHERE Actualizacion=3
END

Nota: Si el valor 3 existe en el campo "actualización" de la tabla
"actualizaciones" la edición de tabla1 no falla. Pero si el valor 3 no
existe en "actualizaciones" falla.

El mensaje de error es:
No se puede encontrar la fila para su actualización; algunos valores han
cambiado desde la última vez que se leyó.

José Antonio Muñoz.

"Carlos Sacristan" escribió en el mensaje de noticias
news:%
¿Puedes postear el código de ese trigger?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:
Hola al grupo,

tengo una aplicación diseñada con delphi, ado y sql server. Resulta que
uno de los procesos de edición de datos accede a una tabla (tabla1) que
además tiene asignado un trigger con la intrucción: UPDATE tabla2 SET
valor=1 WHERE id50. Cuando edito los datos de tabla1 e intento
guardar con una instrucción de ADO se produce un error: "No se
encuentra la fila para la actualización, algunos valores han cambiado
desde la última vez que se leyeron".

Este error NO se produce cuando:

a) elimino el trigger
b) Cuando se actualiza el valor de tabla2 ya que existe el id50, en
cambio si no existe 1250 el valor no se actualiza y se produce el
error.

Tabla1 y Tabla2 no tienen nada que salvo el trigger. He desactivado la
anidación de triggers y la recursividad de éstos.

No sé que tiene que ver el error que me da, el trigger y menos la
instrucción que contiene. ¿Acaso el trigger devuelve un error al
sistema al no poder actualizar el valor de la instrucción update y este
error se transforma en otro error en ADO?

Estoy atascado y necesito ayuda.

saludos,
José Antonio Muñoz











Respuesta Responder a este mensaje
#5 Carlos Sacristan
30/10/2009 - 12:06 | Informe spam
Me alegro que funcionara, aquí estamos todos para ayudarnos y aprender.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:%
Ha funcionado, muchísimas gracias.

No sabes tú las vueltas que le he dado al problema.

Que sería de nosotros, los programadores, si no tuvieramos a gente como
vosotros para solucionar problemas de forma desinteresada.

saludos,
José Antonio Muñoz.

"Carlos Sacristan" escribió en el mensaje de noticias
news:
Prueba añadiendo SET NOCOUNT ON antes del UPDATE. Algo como

CREATE TRIGGER Actualizar ON Tabla1 AFTER UPDATE AS
BEGIN
SET NOCOUNT ON

UPDATE Actualizaciones SET Descripcion='1.x 0' WHERE Actualizacion=3

SET NOCOUNT OFF
END

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:%
CREATE TRIGGER Actualizar ON Tabla1 AFTER UPDATE AS
BEGIN
UPDATE Actualizaciones SET Descripcion='1.x 0' WHERE Actualizacion=3
END

Nota: Si el valor 3 existe en el campo "actualización" de la tabla
"actualizaciones" la edición de tabla1 no falla. Pero si el valor 3 no
existe en "actualizaciones" falla.

El mensaje de error es:
No se puede encontrar la fila para su actualización; algunos valores han
cambiado desde la última vez que se leyó.

José Antonio Muñoz.

"Carlos Sacristan" escribió en el mensaje de
noticias news:%
¿Puedes postear el código de ese trigger?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:
Hola al grupo,

tengo una aplicación diseñada con delphi, ado y sql server. Resulta
que uno de los procesos de edición de datos accede a una tabla
(tabla1) que además tiene asignado un trigger con la intrucción:
UPDATE tabla2 SET valor=1 WHERE id50. Cuando edito los datos de
tabla1 e intento guardar con una instrucción de ADO se produce un
error: "No se encuentra la fila para la actualización, algunos valores
han cambiado desde la última vez que se leyeron".

Este error NO se produce cuando:

a) elimino el trigger
b) Cuando se actualiza el valor de tabla2 ya que existe el id50, en
cambio si no existe 1250 el valor no se actualiza y se produce el
error.

Tabla1 y Tabla2 no tienen nada que salvo el trigger. He desactivado la
anidación de triggers y la recursividad de éstos.

No sé que tiene que ver el error que me da, el trigger y menos la
instrucción que contiene. ¿Acaso el trigger devuelve un error al
sistema al no poder actualizar el valor de la instrucción update y
este error se transforma en otro error en ADO?

Estoy atascado y necesito ayuda.

saludos,
José Antonio Muñoz














email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida