Como solventar este error?

17/05/2004 - 21:53 por Harold Godefroy | Informe spam
Cuando hago un Update y este afecta varias filas (esta bien porque eso
quiero), me salta este mensaje de error:

Código de excepción OLE IDispatch 0 de Microsoft Cursor Engine: Información
de columna clave insuficiente o incorrecta; demasiadas filas afectadas por
la actualización..

Aunque es un warning y termina ejecutando la sentencia, como puedo evitar
esto?, que le hace falta a la declaracion de mi tabla? Este codigo esta
puesto en el trigger update de una tabla maestro, donde el update afecta al
detalle haciendo una actualizacion en los registros hijos.

Alguna sugerencia?
Saludos.
T.S.U. Harold Godefroy. Caracas - Venezuela
Coordinador Nacional PortalFox Venezuela
h a r o l d g o d e f r o y @ p o r t a l f o x . c o m

"Sí, soy un criminal, mi crimen es la curiosidad.
Mi crimen es juzgar a la gente por lo que dice y
piensa, no por lo que parece. Mi crimen es que
soy más listo que tu, algo que no me puedes perdonar."
The Mentor

Preguntas similare

Leer las respuestas

#6 Miguel Egea
19/05/2004 - 23:49 | Informe spam
A ver, no se si el trigger hace lo que quieres, ¿te interesa solamente sacar
uno de los elementos eliminados y olvidar el resto?

Por otra parte ¿Compañia y codigo juntos no son clave primaria?

Si comentas al instrucción update histact1 ¿no obtienes el error verdad?

Cuentanos,

de todas formas yo cambiaría el trigger a
algo así
update h set eliminado=1 ,observaciones= d.aquienmod +' ' + d.ahoramod
from histac1 h inner join deleted d on h.compania=d.compania and
h.codigo=d.codigo


Cuentanos que tal queda.


-

Miguel Egea Gómez
Webmaster de PortalSQL

(lo de online sobra)

Microsoft SqlServer M.V.P.


Cual


CREATE TRIGGER [activos_deleted] ON dbo.activos1
INSTEAD OF DELETE
AS

DECLARE @compania AS VARCHAR(3)
DECLARE @codigo AS VARCHAR(6)
DECLARE @observaciones AS VARCHAR(100)
SET @compania = (SELECT TOP 1 compania from deleted)
SET @codigo = (SELECT TOP 1 codigo from deleted)
SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+' '+(SELECT TOP 1
ahoramod FROM deleted)
UPDATE histact1 SET eliminado = 1,observaciones = @observaciones WHERE
compania = @compania and codigo = @codigo


"Harold Godefroy" escribió en el mensaje
news:
Asi lo tengo creado:

CREATE UNIQUE
INDEX [surrkey] ON [dbo].[histact1] ([surrkey])
WITH
DROP_EXISTING
ON [PRIMARY]

Alguna sugerencia? Hay que cambiar algo en el proveedor oledb con el que


me
conecto desde mi aplicacion?

> Saludos.
T.S.U. Harold Godefroy. Caracas - Venezuela
Coordinador Nacional PortalFox Venezuela
h a r o l d g o d e f r o y @ p o r t a l f o x . c o m

"Sí, soy un criminal, mi crimen es la curiosidad.
Mi crimen es juzgar a la gente por lo que dice y
piensa, no por lo que parece. Mi crimen es que
soy más listo que tu, algo que no me puedes perdonar."
The Mentor

"Miguel Egea" escribió en el mensaje
news:%
> Prueba a añadir una clave primaria en este campo que seguramente es


único.
> [surrkey]
>
>

>
> Miguel Egea Gómez
> Webmaster de PortalSQL
>
> (lo de online sobra)
>
> Microsoft SqlServer M.V.P.
>
>
>
> "Harold Godefroy" escribió en el mensaje
> news:
> > Este es el codigo de el trigger en la tabla maestro:
> >
> > CREATE TRIGGER [activos_deleted] ON dbo.activos1
> > INSTEAD OF DELETE
> > AS
> >
> > DECLARE @compania AS VARCHAR(3)
> > DECLARE @codigo AS VARCHAR(6)
> > DECLARE @observaciones AS VARCHAR(100)
> > SET @compania = (SELECT TOP 1 compania from deleted)
> > SET @codigo = (SELECT TOP 1 codigo from deleted)
> > SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+' '+(SELECT
TOP
> 1
> > ahoramod FROM deleted)
> > UPDATE histact1 SET eliminado = 1,observaciones = @observaciones WHERE
> > compania = @compania and codigo = @codigo
> >
> > Y esta es la estructura de la tabla detalle:
> >
> > CREATE TABLE [dbo].[histact1] (
> > [surrkey] [bigint] IDENTITY (1, 1) NOT NULL ,
> > [compania] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [codigo] [char] (6) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [dpto] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [peri] [char] (4) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [mes] [char] (2) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [status] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [fec_adq] [smalldatetime] NULL ,
> > [year] [char] (7) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [tipo] [decimal](3, 0) NOT NULL ,
> > [vida_util] [decimal](9, 0) NOT NULL ,
> > [metodepre] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [costo] [decimal](15, 2) NOT NULL ,
> > [rescate] [decimal](16, 2) NOT NULL ,
> > [cst_adc] [decimal](14, 2) NOT NULL ,
> > [cst_dsn] [decimal](16, 6) NOT NULL ,
> > [depre_dsn] [decimal](16, 6) NOT NULL ,
> > [depre] [decimal](19, 6) NOT NULL ,
> > [depre_adc] [decimal](19, 6) NOT NULL ,
> > [acu_depre] [decimal](16, 6) NOT NULL ,
> > [acu_adc] [decimal](16, 6) NOT NULL ,
> > [vu_fal] [decimal](5, 0) NOT NULL ,
> > [adcvu_fal] [decimal](5, 0) NOT NULL ,
> > [micosto] [decimal](18, 2) NOT NULL ,
> > [midepre] [decimal](18, 2) NOT NULL ,
> > [usuario] [char] (15) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [cuanmod] [smalldatetime] NULL ,
> > [horamod] [char] (10) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > [eliminado] [bit] NOT NULL ,
> > [observaciones] [varchar] (100) COLLATE Traditional_Spanish_CI_AS


NULL
> > ) ON [PRIMARY]
> > GO
> >
> > Perdonad lo largo de este mensaje.
> >
> > > > > Saludos.
> > T.S.U. Harold Godefroy. Caracas - Venezuela
> > Coordinador Nacional PortalFox Venezuela
> > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> >
> > "Sí, soy un criminal, mi crimen es la curiosidad.
> > Mi crimen es juzgar a la gente por lo que dice y
> > piensa, no por lo que parece. Mi crimen es que
> > soy más listo que tu, algo que no me puedes perdonar."
> > The Mentor
> >
> > "Miguel Egea" escribió en el


mensaje
> > news:%230DoR%
> > > Pasanos la estructura de la tabla y el update que haces, ¿Tiene


clave
> > > primaria verdad?
> > >
> > > Saludos
> > > Miguel Egea
> > > "Harold Godefroy" escribió en el mensaje
> > > news:#
> > > > Cuando hago un Update y este afecta varias filas (esta bien porque
eso
> > > > quiero), me salta este mensaje de error:
> > > >
> > > > Código de excepción OLE IDispatch 0 de Microsoft Cursor Engine:
> > > Información
> > > > de columna clave insuficiente o incorrecta; demasiadas filas
afectadas
> > por
> > > > la actualización..
> > > >
> > > > Aunque es un warning y termina ejecutando la sentencia, como puedo
> > evitar
> > > > esto?, que le hace falta a la declaracion de mi tabla? Este codigo
> esta
> > > > puesto en el trigger update de una tabla maestro, donde el update
> afecta
> > > al
> > > > detalle haciendo una actualizacion en los registros hijos.
> > > >
> > > > Alguna sugerencia?
> > > > > > > > > Saludos.
> > > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > > Coordinador Nacional PortalFox Venezuela
> > > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > > >
> > > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > > Mi crimen es juzgar a la gente por lo que dice y
> > > > piensa, no por lo que parece. Mi crimen es que
> > > > soy más listo que tu, algo que no me puedes perdonar."
> > > > The Mentor
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Harold Godefroy
21/05/2004 - 15:15 | Informe spam
Perfecto Miguel, lo probare y te comentare como quedo. Fijate que Compania y
codigo juntos no es clave primaria porque la tabla es el detalle de una
tabla maestro, donde compania+codigo se repite muchas veces, ya que es la
tabla de un historico de depreciaciones de activos de la empresa. ¿Tienes
algunos links en español para aprender SQLServer 2000?

Saludos.
T.S.U. Harold Godefroy. Caracas - Venezuela
Coordinador Nacional PortalFox Venezuela
h a r o l d g o d e f r o y @ p o r t a l f o x . c o m

"Sí, soy un criminal, mi crimen es la curiosidad.
Mi crimen es juzgar a la gente por lo que dice y
piensa, no por lo que parece. Mi crimen es que
soy más listo que tu, algo que no me puedes perdonar."
The Mentor

"Miguel Egea" escribió en el mensaje
news:
A ver, no se si el trigger hace lo que quieres, ¿te interesa solamente


sacar
uno de los elementos eliminados y olvidar el resto?

Por otra parte ¿Compañia y codigo juntos no son clave primaria?

Si comentas al instrucción update histact1 ¿no obtienes el error verdad?

Cuentanos,

de todas formas yo cambiaría el trigger a
algo así
update h set eliminado=1 ,observaciones= d.aquienmod +' ' + d.ahoramod
from histac1 h inner join deleted d on h.compania=d.compania and
h.codigo=d.codigo


Cuentanos que tal queda.



Miguel Egea Gómez
Webmaster de PortalSQL

(lo de online sobra)

Microsoft SqlServer M.V.P.


Cual


CREATE TRIGGER [activos_deleted] ON dbo.activos1
INSTEAD OF DELETE
AS

DECLARE @compania AS VARCHAR(3)
DECLARE @codigo AS VARCHAR(6)
DECLARE @observaciones AS VARCHAR(100)
SET @compania = (SELECT TOP 1 compania from deleted)
SET @codigo = (SELECT TOP 1 codigo from deleted)
SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+' '+(SELECT TOP


1
ahoramod FROM deleted)
UPDATE histact1 SET eliminado = 1,observaciones = @observaciones WHERE
compania = @compania and codigo = @codigo


"Harold Godefroy" escribió en el mensaje
news:
> Asi lo tengo creado:
>
> CREATE UNIQUE
> INDEX [surrkey] ON [dbo].[histact1] ([surrkey])
> WITH
> DROP_EXISTING
> ON [PRIMARY]
>
> Alguna sugerencia? Hay que cambiar algo en el proveedor oledb con el que
me
> conecto desde mi aplicacion?
>
> > > Saludos.
> T.S.U. Harold Godefroy. Caracas - Venezuela
> Coordinador Nacional PortalFox Venezuela
> h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
>
> "Sí, soy un criminal, mi crimen es la curiosidad.
> Mi crimen es juzgar a la gente por lo que dice y
> piensa, no por lo que parece. Mi crimen es que
> soy más listo que tu, algo que no me puedes perdonar."
> The Mentor
>
> "Miguel Egea" escribió en el mensaje
> news:%
> > Prueba a añadir una clave primaria en este campo que seguramente es
único.
> > [surrkey]
> >
> >
>

> >
> > Miguel Egea Gómez
> > Webmaster de PortalSQL
> >
> > (lo de online sobra)
> >
> > Microsoft SqlServer M.V.P.
> >
> >
> >
> > "Harold Godefroy" escribió en el mensaje
> > news:
> > > Este es el codigo de el trigger en la tabla maestro:
> > >
> > > CREATE TRIGGER [activos_deleted] ON dbo.activos1
> > > INSTEAD OF DELETE
> > > AS
> > >
> > > DECLARE @compania AS VARCHAR(3)
> > > DECLARE @codigo AS VARCHAR(6)
> > > DECLARE @observaciones AS VARCHAR(100)
> > > SET @compania = (SELECT TOP 1 compania from deleted)
> > > SET @codigo = (SELECT TOP 1 codigo from deleted)
> > > SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+'


'+(SELECT
> TOP
> > 1
> > > ahoramod FROM deleted)
> > > UPDATE histact1 SET eliminado = 1,observaciones = @observaciones


WHERE
> > > compania = @compania and codigo = @codigo
> > >
> > > Y esta es la estructura de la tabla detalle:
> > >
> > > CREATE TABLE [dbo].[histact1] (
> > > [surrkey] [bigint] IDENTITY (1, 1) NOT NULL ,
> > > [compania] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [codigo] [char] (6) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [dpto] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [peri] [char] (4) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [mes] [char] (2) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [status] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [fec_adq] [smalldatetime] NULL ,
> > > [year] [char] (7) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [tipo] [decimal](3, 0) NOT NULL ,
> > > [vida_util] [decimal](9, 0) NOT NULL ,
> > > [metodepre] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [costo] [decimal](15, 2) NOT NULL ,
> > > [rescate] [decimal](16, 2) NOT NULL ,
> > > [cst_adc] [decimal](14, 2) NOT NULL ,
> > > [cst_dsn] [decimal](16, 6) NOT NULL ,
> > > [depre_dsn] [decimal](16, 6) NOT NULL ,
> > > [depre] [decimal](19, 6) NOT NULL ,
> > > [depre_adc] [decimal](19, 6) NOT NULL ,
> > > [acu_depre] [decimal](16, 6) NOT NULL ,
> > > [acu_adc] [decimal](16, 6) NOT NULL ,
> > > [vu_fal] [decimal](5, 0) NOT NULL ,
> > > [adcvu_fal] [decimal](5, 0) NOT NULL ,
> > > [micosto] [decimal](18, 2) NOT NULL ,
> > > [midepre] [decimal](18, 2) NOT NULL ,
> > > [usuario] [char] (15) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [cuanmod] [smalldatetime] NULL ,
> > > [horamod] [char] (10) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > [eliminado] [bit] NOT NULL ,
> > > [observaciones] [varchar] (100) COLLATE Traditional_Spanish_CI_AS
NULL
> > > ) ON [PRIMARY]
> > > GO
> > >
> > > Perdonad lo largo de este mensaje.
> > >
> > > > > > > Saludos.
> > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > Coordinador Nacional PortalFox Venezuela
> > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > >
> > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > Mi crimen es juzgar a la gente por lo que dice y
> > > piensa, no por lo que parece. Mi crimen es que
> > > soy más listo que tu, algo que no me puedes perdonar."
> > > The Mentor
> > >
> > > "Miguel Egea" escribió en el
mensaje
> > > news:%230DoR%
> > > > Pasanos la estructura de la tabla y el update que haces, ¿Tiene
clave
> > > > primaria verdad?
> > > >
> > > > Saludos
> > > > Miguel Egea
> > > > "Harold Godefroy" escribió en el mensaje
> > > > news:#
> > > > > Cuando hago un Update y este afecta varias filas (esta bien


porque
> eso
> > > > > quiero), me salta este mensaje de error:
> > > > >
> > > > > Código de excepción OLE IDispatch 0 de Microsoft Cursor Engine:
> > > > Información
> > > > > de columna clave insuficiente o incorrecta; demasiadas filas
> afectadas
> > > por
> > > > > la actualización..
> > > > >
> > > > > Aunque es un warning y termina ejecutando la sentencia, como


puedo
> > > evitar
> > > > > esto?, que le hace falta a la declaracion de mi tabla? Este


codigo
> > esta
> > > > > puesto en el trigger update de una tabla maestro, donde el


update
> > afecta
> > > > al
> > > > > detalle haciendo una actualizacion en los registros hijos.
> > > > >
> > > > > Alguna sugerencia?
> > > > > > > > > > > Saludos.
> > > > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > > > Coordinador Nacional PortalFox Venezuela
> > > > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > > > >
> > > > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > > > Mi crimen es juzgar a la gente por lo que dice y
> > > > > piensa, no por lo que parece. Mi crimen es que
> > > > > soy más listo que tu, algo que no me puedes perdonar."
> > > > > The Mentor
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#8 Miguel Egea
30/05/2004 - 21:07 | Informe spam
Disculpa pero hasta hoy no he podido volver a leer este magnífico grupo,
mucho viaje,... igual www.portalsql.com puede ayudarte en el tema. Recuerdos
a Pablo Roca (es un fenómeno :-) )


-

Miguel Egea Gómez
Webmaster de PortalSQL

(lo de online sobra)

Microsoft SqlServer M.V.P.

"Harold Godefroy" escribió en el mensaje
news:
Perfecto Miguel, lo probare y te comentare como quedo. Fijate que Compania


y
codigo juntos no es clave primaria porque la tabla es el detalle de una
tabla maestro, donde compania+codigo se repite muchas veces, ya que es la
tabla de un historico de depreciaciones de activos de la empresa. ¿Tienes
algunos links en español para aprender SQLServer 2000?

> Saludos.
T.S.U. Harold Godefroy. Caracas - Venezuela
Coordinador Nacional PortalFox Venezuela
h a r o l d g o d e f r o y @ p o r t a l f o x . c o m

"Sí, soy un criminal, mi crimen es la curiosidad.
Mi crimen es juzgar a la gente por lo que dice y
piensa, no por lo que parece. Mi crimen es que
soy más listo que tu, algo que no me puedes perdonar."
The Mentor

"Miguel Egea" escribió en el mensaje
news:
> A ver, no se si el trigger hace lo que quieres, ¿te interesa solamente
sacar
> uno de los elementos eliminados y olvidar el resto?
>
> Por otra parte ¿Compañia y codigo juntos no son clave primaria?
>
> Si comentas al instrucción update histact1 ¿no obtienes el error verdad?
>
> Cuentanos,
>
> de todas formas yo cambiaría el trigger a
> algo así
> update h set eliminado=1 ,observaciones= d.aquienmod +' ' + d.ahoramod
> from histac1 h inner join deleted d on h.compania=d.compania and
> h.codigo=d.codigo
>
>
> Cuentanos que tal queda.
>
>

>
> Miguel Egea Gómez
> Webmaster de PortalSQL
>
> (lo de online sobra)
>
> Microsoft SqlServer M.V.P.
>
>
> Cual
>
>
> CREATE TRIGGER [activos_deleted] ON dbo.activos1
> INSTEAD OF DELETE
> AS
>
> DECLARE @compania AS VARCHAR(3)
> DECLARE @codigo AS VARCHAR(6)
> DECLARE @observaciones AS VARCHAR(100)
> SET @compania = (SELECT TOP 1 compania from deleted)
> SET @codigo = (SELECT TOP 1 codigo from deleted)
> SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+' '+(SELECT


TOP
1
> ahoramod FROM deleted)
> UPDATE histact1 SET eliminado = 1,observaciones = @observaciones WHERE
> compania = @compania and codigo = @codigo
>
>
> "Harold Godefroy" escribió en el mensaje
> news:
> > Asi lo tengo creado:
> >
> > CREATE UNIQUE
> > INDEX [surrkey] ON [dbo].[histact1] ([surrkey])
> > WITH
> > DROP_EXISTING
> > ON [PRIMARY]
> >
> > Alguna sugerencia? Hay que cambiar algo en el proveedor oledb con el


que
> me
> > conecto desde mi aplicacion?
> >
> > > > > Saludos.
> > T.S.U. Harold Godefroy. Caracas - Venezuela
> > Coordinador Nacional PortalFox Venezuela
> > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> >
> > "Sí, soy un criminal, mi crimen es la curiosidad.
> > Mi crimen es juzgar a la gente por lo que dice y
> > piensa, no por lo que parece. Mi crimen es que
> > soy más listo que tu, algo que no me puedes perdonar."
> > The Mentor
> >
> > "Miguel Egea" escribió en el


mensaje
> > news:%
> > > Prueba a añadir una clave primaria en este campo que seguramente es
> único.
> > > [surrkey]
> > >
> > >
> >
>

> > >
> > > Miguel Egea Gómez
> > > Webmaster de PortalSQL
> > >
> > > (lo de online sobra)
> > >
> > > Microsoft SqlServer M.V.P.
> > >
> > >
> > >
> > > "Harold Godefroy" escribió en el mensaje
> > > news:
> > > > Este es el codigo de el trigger en la tabla maestro:
> > > >
> > > > CREATE TRIGGER [activos_deleted] ON dbo.activos1
> > > > INSTEAD OF DELETE
> > > > AS
> > > >
> > > > DECLARE @compania AS VARCHAR(3)
> > > > DECLARE @codigo AS VARCHAR(6)
> > > > DECLARE @observaciones AS VARCHAR(100)
> > > > SET @compania = (SELECT TOP 1 compania from deleted)
> > > > SET @codigo = (SELECT TOP 1 codigo from deleted)
> > > > SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+'
'+(SELECT
> > TOP
> > > 1
> > > > ahoramod FROM deleted)
> > > > UPDATE histact1 SET eliminado = 1,observaciones = @observaciones
WHERE
> > > > compania = @compania and codigo = @codigo
> > > >
> > > > Y esta es la estructura de la tabla detalle:
> > > >
> > > > CREATE TABLE [dbo].[histact1] (
> > > > [surrkey] [bigint] IDENTITY (1, 1) NOT NULL ,
> > > > [compania] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT NULL


,
> > > > [codigo] [char] (6) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > [dpto] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > [peri] [char] (4) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > [mes] [char] (2) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > [status] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > [fec_adq] [smalldatetime] NULL ,
> > > > [year] [char] (7) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > [tipo] [decimal](3, 0) NOT NULL ,
> > > > [vida_util] [decimal](9, 0) NOT NULL ,
> > > > [metodepre] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT NULL


,
> > > > [costo] [decimal](15, 2) NOT NULL ,
> > > > [rescate] [decimal](16, 2) NOT NULL ,
> > > > [cst_adc] [decimal](14, 2) NOT NULL ,
> > > > [cst_dsn] [decimal](16, 6) NOT NULL ,
> > > > [depre_dsn] [decimal](16, 6) NOT NULL ,
> > > > [depre] [decimal](19, 6) NOT NULL ,
> > > > [depre_adc] [decimal](19, 6) NOT NULL ,
> > > > [acu_depre] [decimal](16, 6) NOT NULL ,
> > > > [acu_adc] [decimal](16, 6) NOT NULL ,
> > > > [vu_fal] [decimal](5, 0) NOT NULL ,
> > > > [adcvu_fal] [decimal](5, 0) NOT NULL ,
> > > > [micosto] [decimal](18, 2) NOT NULL ,
> > > > [midepre] [decimal](18, 2) NOT NULL ,
> > > > [usuario] [char] (15) COLLATE Traditional_Spanish_CI_AS NOT NULL


,
> > > > [cuanmod] [smalldatetime] NULL ,
> > > > [horamod] [char] (10) COLLATE Traditional_Spanish_CI_AS NOT NULL


,
> > > > [eliminado] [bit] NOT NULL ,
> > > > [observaciones] [varchar] (100) COLLATE Traditional_Spanish_CI_AS
> NULL
> > > > ) ON [PRIMARY]
> > > > GO
> > > >
> > > > Perdonad lo largo de este mensaje.
> > > >
> > > > > > > > > Saludos.
> > > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > > Coordinador Nacional PortalFox Venezuela
> > > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > > >
> > > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > > Mi crimen es juzgar a la gente por lo que dice y
> > > > piensa, no por lo que parece. Mi crimen es que
> > > > soy más listo que tu, algo que no me puedes perdonar."
> > > > The Mentor
> > > >
> > > > "Miguel Egea" escribió en el
> mensaje
> > > > news:%230DoR%
> > > > > Pasanos la estructura de la tabla y el update que haces, ¿Tiene
> clave
> > > > > primaria verdad?
> > > > >
> > > > > Saludos
> > > > > Miguel Egea
> > > > > "Harold Godefroy" escribió en el mensaje
> > > > > news:#
> > > > > > Cuando hago un Update y este afecta varias filas (esta bien
porque
> > eso
> > > > > > quiero), me salta este mensaje de error:
> > > > > >
> > > > > > Código de excepción OLE IDispatch 0 de Microsoft Cursor


Engine:
> > > > > Información
> > > > > > de columna clave insuficiente o incorrecta; demasiadas filas
> > afectadas
> > > > por
> > > > > > la actualización..
> > > > > >
> > > > > > Aunque es un warning y termina ejecutando la sentencia, como
puedo
> > > > evitar
> > > > > > esto?, que le hace falta a la declaracion de mi tabla? Este
codigo
> > > esta
> > > > > > puesto en el trigger update de una tabla maestro, donde el
update
> > > afecta
> > > > > al
> > > > > > detalle haciendo una actualizacion en los registros hijos.
> > > > > >
> > > > > > Alguna sugerencia?
> > > > > > > > > > > > > Saludos.
> > > > > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > > > > Coordinador Nacional PortalFox Venezuela
> > > > > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > > > > >
> > > > > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > > > > Mi crimen es juzgar a la gente por lo que dice y
> > > > > > piensa, no por lo que parece. Mi crimen es que
> > > > > > soy más listo que tu, algo que no me puedes perdonar."
> > > > > > The Mentor
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#9 Harold Godefroy
01/06/2004 - 15:11 | Informe spam
Gracias por responder Miguel, le dare tus saludos a Pablo ;), necesito que
me expliques el porque de esto por favor, o alguien mas si lo sabe: El
problema esta casi resuelto y la solucion fue tan estupida como invertir el
orden de 2 lineas en el SP, copio el codigo del SP y les indico la linea que
intercambie de posicion (no tiene mucho sentido):

CREATE TRIGGER [activos_deleted] ON dbo.activos1
INSTEAD OF DELETE
AS

UPDATE a SET eliminado=1,observaciones='Eliminado por '+RTRIM(d.aquienmod)+'
' +CAST(GETDATE() AS VARCHAR)+' (TRIGGER ACTIVOS_DELETED)'
FROM activos1 a INNER JOIN deleted d ON a.compania=d.compania and
a.codigo=d.codigo and a.eliminado=d.eliminado
UPDATE h SET eliminado=1,observaciones='Eliminado por '+RTRIM(d.aquienmod)+'
' +CAST(GETDATE() AS VARCHAR)+' (TRIGGER ACTIVOS_DELETED)'
FROM histact1 h INNER JOIN deleted d ON h.compania=d.compania AND
h.codigo=d.codigo AND h.eliminado = d.eliminado
UPDATE c SET eliminado=1,observaciones='Eliminado por '+RTRIM(d.aquienmod)+'
' +CAST(GETDATE() AS VARCHAR)+' (TRIGGER ACTIVOS_DELETED)'
FROM cst_adc1 c INNER JOIN deleted d ON c.compania=d.compania and
c.codigo=d.codigo and c.eliminado=d.eliminado

Cuando el segundo UPDATE que afecta a la tabla histact1 estaba de ultimo, se
producia este error; lo puse de penultimo y el error ha desaparecido. Lo
volvi a colocar donde estaba y se volvio a producir el mismo error ¿Por qué
pasa esto? Es tonto, lo se, pero no tiene sentido que un error como ese
salga con solo cambiar de sitio el UPDATE que no tiene nada que ver con el
de abajo


Saludos.
T.S.U. Harold Godefroy. Caracas - Venezuela
Coordinador Nacional PortalFox Venezuela
h a r o l d g o d e f r o y @ p o r t a l f o x . c o m

"Sí, soy un criminal, mi crimen es la curiosidad.
Mi crimen es juzgar a la gente por lo que dice y
piensa, no por lo que parece. Mi crimen es que
soy más listo que tu, algo que no me puedes perdonar."
The Mentor

"Miguel Egea" escribió en el mensaje
news:
Disculpa pero hasta hoy no he podido volver a leer este magnífico grupo,
mucho viaje,... igual www.portalsql.com puede ayudarte en el tema.


Recuerdos
a Pablo Roca (es un fenómeno :-) )



Miguel Egea Gómez
Webmaster de PortalSQL

(lo de online sobra)

Microsoft SqlServer M.V.P.

"Harold Godefroy" escribió en el mensaje
news:
> Perfecto Miguel, lo probare y te comentare como quedo. Fijate que


Compania
y
> codigo juntos no es clave primaria porque la tabla es el detalle de una
> tabla maestro, donde compania+codigo se repite muchas veces, ya que es


la
> tabla de un historico de depreciaciones de activos de la empresa.


¿Tienes
> algunos links en español para aprender SQLServer 2000?
>
> > > Saludos.
> T.S.U. Harold Godefroy. Caracas - Venezuela
> Coordinador Nacional PortalFox Venezuela
> h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
>
> "Sí, soy un criminal, mi crimen es la curiosidad.
> Mi crimen es juzgar a la gente por lo que dice y
> piensa, no por lo que parece. Mi crimen es que
> soy más listo que tu, algo que no me puedes perdonar."
> The Mentor
>
> "Miguel Egea" escribió en el mensaje
> news:
> > A ver, no se si el trigger hace lo que quieres, ¿te interesa solamente
> sacar
> > uno de los elementos eliminados y olvidar el resto?
> >
> > Por otra parte ¿Compañia y codigo juntos no son clave primaria?
> >
> > Si comentas al instrucción update histact1 ¿no obtienes el error


verdad?
> >
> > Cuentanos,
> >
> > de todas formas yo cambiaría el trigger a
> > algo así
> > update h set eliminado=1 ,observaciones= d.aquienmod +' ' + d.ahoramod
> > from histac1 h inner join deleted d on h.compania=d.compania and
> > h.codigo=d.codigo
> >
> >
> > Cuentanos que tal queda.
> >
> >
>

> >
> > Miguel Egea Gómez
> > Webmaster de PortalSQL
> >
> > (lo de online sobra)
> >
> > Microsoft SqlServer M.V.P.
> >
> >
> > Cual
> >
> >
> > CREATE TRIGGER [activos_deleted] ON dbo.activos1
> > INSTEAD OF DELETE
> > AS
> >
> > DECLARE @compania AS VARCHAR(3)
> > DECLARE @codigo AS VARCHAR(6)
> > DECLARE @observaciones AS VARCHAR(100)
> > SET @compania = (SELECT TOP 1 compania from deleted)
> > SET @codigo = (SELECT TOP 1 codigo from deleted)
> > SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+' '+(SELECT
TOP
> 1
> > ahoramod FROM deleted)
> > UPDATE histact1 SET eliminado = 1,observaciones = @observaciones WHERE
> > compania = @compania and codigo = @codigo
> >
> >
> > "Harold Godefroy" escribió en el mensaje
> > news:
> > > Asi lo tengo creado:
> > >
> > > CREATE UNIQUE
> > > INDEX [surrkey] ON [dbo].[histact1] ([surrkey])
> > > WITH
> > > DROP_EXISTING
> > > ON [PRIMARY]
> > >
> > > Alguna sugerencia? Hay que cambiar algo en el proveedor oledb con el
que
> > me
> > > conecto desde mi aplicacion?
> > >
> > > > > > > Saludos.
> > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > Coordinador Nacional PortalFox Venezuela
> > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > >
> > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > Mi crimen es juzgar a la gente por lo que dice y
> > > piensa, no por lo que parece. Mi crimen es que
> > > soy más listo que tu, algo que no me puedes perdonar."
> > > The Mentor
> > >
> > > "Miguel Egea" escribió en el
mensaje
> > > news:%
> > > > Prueba a añadir una clave primaria en este campo que seguramente


es
> > único.
> > > > [surrkey]
> > > >
> > > >
> > >
> >
>

> > > >
> > > > Miguel Egea Gómez
> > > > Webmaster de PortalSQL
> > > >
> > > > (lo de online sobra)
> > > >
> > > > Microsoft SqlServer M.V.P.
> > > >
> > > >
> > > >
> > > > "Harold Godefroy" escribió en el mensaje
> > > > news:
> > > > > Este es el codigo de el trigger en la tabla maestro:
> > > > >
> > > > > CREATE TRIGGER [activos_deleted] ON dbo.activos1
> > > > > INSTEAD OF DELETE
> > > > > AS
> > > > >
> > > > > DECLARE @compania AS VARCHAR(3)
> > > > > DECLARE @codigo AS VARCHAR(6)
> > > > > DECLARE @observaciones AS VARCHAR(100)
> > > > > SET @compania = (SELECT TOP 1 compania from deleted)
> > > > > SET @codigo = (SELECT TOP 1 codigo from deleted)
> > > > > SET @observaciones = (SELECT TOP 1 aquienmod FROM deleted)+'
> '+(SELECT
> > > TOP
> > > > 1
> > > > > ahoramod FROM deleted)
> > > > > UPDATE histact1 SET eliminado = 1,observaciones = @observaciones
> WHERE
> > > > > compania = @compania and codigo = @codigo
> > > > >
> > > > > Y esta es la estructura de la tabla detalle:
> > > > >
> > > > > CREATE TABLE [dbo].[histact1] (
> > > > > [surrkey] [bigint] IDENTITY (1, 1) NOT NULL ,
> > > > > [compania] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT


NULL
,
> > > > > [codigo] [char] (6) COLLATE Traditional_Spanish_CI_AS NOT NULL


,
> > > > > [dpto] [char] (3) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > > [peri] [char] (4) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > > [mes] [char] (2) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > > [status] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT NULL


,
> > > > > [fec_adq] [smalldatetime] NULL ,
> > > > > [year] [char] (7) COLLATE Traditional_Spanish_CI_AS NOT NULL ,
> > > > > [tipo] [decimal](3, 0) NOT NULL ,
> > > > > [vida_util] [decimal](9, 0) NOT NULL ,
> > > > > [metodepre] [char] (1) COLLATE Traditional_Spanish_CI_AS NOT


NULL
,
> > > > > [costo] [decimal](15, 2) NOT NULL ,
> > > > > [rescate] [decimal](16, 2) NOT NULL ,
> > > > > [cst_adc] [decimal](14, 2) NOT NULL ,
> > > > > [cst_dsn] [decimal](16, 6) NOT NULL ,
> > > > > [depre_dsn] [decimal](16, 6) NOT NULL ,
> > > > > [depre] [decimal](19, 6) NOT NULL ,
> > > > > [depre_adc] [decimal](19, 6) NOT NULL ,
> > > > > [acu_depre] [decimal](16, 6) NOT NULL ,
> > > > > [acu_adc] [decimal](16, 6) NOT NULL ,
> > > > > [vu_fal] [decimal](5, 0) NOT NULL ,
> > > > > [adcvu_fal] [decimal](5, 0) NOT NULL ,
> > > > > [micosto] [decimal](18, 2) NOT NULL ,
> > > > > [midepre] [decimal](18, 2) NOT NULL ,
> > > > > [usuario] [char] (15) COLLATE Traditional_Spanish_CI_AS NOT


NULL
,
> > > > > [cuanmod] [smalldatetime] NULL ,
> > > > > [horamod] [char] (10) COLLATE Traditional_Spanish_CI_AS NOT


NULL
,
> > > > > [eliminado] [bit] NOT NULL ,
> > > > > [observaciones] [varchar] (100) COLLATE


Traditional_Spanish_CI_AS
> > NULL
> > > > > ) ON [PRIMARY]
> > > > > GO
> > > > >
> > > > > Perdonad lo largo de este mensaje.
> > > > >
> > > > > > > > > > > Saludos.
> > > > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > > > Coordinador Nacional PortalFox Venezuela
> > > > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > > > >
> > > > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > > > Mi crimen es juzgar a la gente por lo que dice y
> > > > > piensa, no por lo que parece. Mi crimen es que
> > > > > soy más listo que tu, algo que no me puedes perdonar."
> > > > > The Mentor
> > > > >
> > > > > "Miguel Egea" escribió en el
> > mensaje
> > > > > news:%230DoR%
> > > > > > Pasanos la estructura de la tabla y el update que haces,


¿Tiene
> > clave
> > > > > > primaria verdad?
> > > > > >
> > > > > > Saludos
> > > > > > Miguel Egea
> > > > > > "Harold Godefroy" escribió en el mensaje
> > > > > > news:#
> > > > > > > Cuando hago un Update y este afecta varias filas (esta bien
> porque
> > > eso
> > > > > > > quiero), me salta este mensaje de error:
> > > > > > >
> > > > > > > Código de excepción OLE IDispatch 0 de Microsoft Cursor
Engine:
> > > > > > Información
> > > > > > > de columna clave insuficiente o incorrecta; demasiadas filas
> > > afectadas
> > > > > por
> > > > > > > la actualización..
> > > > > > >
> > > > > > > Aunque es un warning y termina ejecutando la sentencia, como
> puedo
> > > > > evitar
> > > > > > > esto?, que le hace falta a la declaracion de mi tabla? Este
> codigo
> > > > esta
> > > > > > > puesto en el trigger update de una tabla maestro, donde el
> update
> > > > afecta
> > > > > > al
> > > > > > > detalle haciendo una actualizacion en los registros hijos.
> > > > > > >
> > > > > > > Alguna sugerencia?
> > > > > > > > > > > > > > > Saludos.
> > > > > > > T.S.U. Harold Godefroy. Caracas - Venezuela
> > > > > > > Coordinador Nacional PortalFox Venezuela
> > > > > > > h a r o l d g o d e f r o y @ p o r t a l f o x . c o m
> > > > > > >
> > > > > > > "Sí, soy un criminal, mi crimen es la curiosidad.
> > > > > > > Mi crimen es juzgar a la gente por lo que dice y
> > > > > > > piensa, no por lo que parece. Mi crimen es que
> > > > > > > soy más listo que tu, algo que no me puedes perdonar."
> > > > > > > The Mentor
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>


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