error en trigger

09/02/2005 - 00:00 por andrey2001 | Informe spam
Buenas Tardes Grupo...

Si me pueden ayudar con esta situacion...

CREATE TRIGGER mpTg_cambiofechas ON dbo.tbl_car_fechascobranza
FOR UPDATE
AS

insert into
tbl_car_cambiofechascobranza(strcampana,strcodcob,strcampomodifica,strvalorA
nterior,strvalornuevo,strusuario)

select del.strcampana,del.strcodcobranza,
case when update(dtmfechain21) then cast('dtmfechain21' as varchar(12)) when
update(dtmfechascierre) then cast('dtmfechascierre' as varchar(15)) end as
campo,
case when update(dtmfechain21) then del.dtmfechain21 when
update(dtmfechascierre) then del.dtmfechascierre end as valorant ,
case when update(dtmfechain21) then ins.dtmfechain21 when
update(dtmfechascierre) then ins.dtmfechascierre end as valnuevo,
ins.strusuario as usuario from deleted del inner join inserted ins on
del.strcampana+del.strcodcobranza=ins.strcampana+ins.strcodcobranza


CREATE TABLE [dbo].[tbl_car_cambiofechascobranza] (
[strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcodcob] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcampomodifica] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[intconsecutivo] [int] NOT NULL ,
[strvalorAnterior] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strvalornuevo] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strusuario] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfecsis] [datetime] NOT NULL

CREATE TABLE [dbo].[tbl_car_fechascobranza] (
[strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcodcobranza] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strarea] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfechaIn21] [datetime] NOT NULL ,
[dtmfechasCierre] [datetime] NOT NULL ,
[strusuario] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfecsis] [datetime] NOT NULL

el trigger me da este error
"syntax error converting the nvarchar value 'dtmfechain21' to a column of
data type int"


Mil Gracias...

Preguntas similare

Leer las respuestas

#1 MAXI
09/02/2005 - 00:41 | Informe spam
Hola, no entiendo bien que queres hacer con ese trigger, pero el error es
que no puede convertir el valor del cast.

Porque no me explicas bien que necesitas que haga el trigger asi vemos si
tenemos otra manera de resolverlo



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"andrey2001" escribió en el mensaje
news:%23KQ%
Buenas Tardes Grupo...

Si me pueden ayudar con esta situacion...

CREATE TRIGGER mpTg_cambiofechas ON dbo.tbl_car_fechascobranza
FOR UPDATE
AS

insert into
tbl_car_cambiofechascobranza(strcampana,strcodcob,strcampomodifica,strvalorA
nterior,strvalornuevo,strusuario)

select del.strcampana,del.strcodcobranza,
case when update(dtmfechain21) then cast('dtmfechain21' as varchar(12))
when
update(dtmfechascierre) then cast('dtmfechascierre' as varchar(15)) end as
campo,
case when update(dtmfechain21) then del.dtmfechain21 when
update(dtmfechascierre) then del.dtmfechascierre end as valorant ,
case when update(dtmfechain21) then ins.dtmfechain21 when
update(dtmfechascierre) then ins.dtmfechascierre end as valnuevo,
ins.strusuario as usuario from deleted del inner join inserted ins on
del.strcampana+del.strcodcobranza=ins.strcampana+ins.strcodcobranza


CREATE TABLE [dbo].[tbl_car_cambiofechascobranza] (
[strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcodcob] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcampomodifica] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[intconsecutivo] [int] NOT NULL ,
[strvalorAnterior] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strvalornuevo] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strusuario] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfecsis] [datetime] NOT NULL

CREATE TABLE [dbo].[tbl_car_fechascobranza] (
[strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcodcobranza] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strarea] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfechaIn21] [datetime] NOT NULL ,
[dtmfechasCierre] [datetime] NOT NULL ,
[strusuario] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
,
[dtmfecsis] [datetime] NOT NULL

el trigger me da este error
"syntax error converting the nvarchar value 'dtmfechain21' to a column of
data type int"


Mil Gracias...



Respuesta Responder a este mensaje
#2 ulises
09/02/2005 - 01:30 | Informe spam
Tengo entendido que la clasúla que pregunta si una columna ha sido
modificada es IF UPDATE(), reemplaza el trigger por

CREATE TRIGGER mpTg_cambiofechas ON dbo.tbl_car_fechascobranza
FOR UPDATE
AS
IF UPDATE(dtmfechain21)
INSERT ...
SELECT del.strcampana, del.strcodcobranza, 'dtmfechain21',
del.dtmfechain21, ins.dtmfechain21, ...

IF UPDATE(dtmfechascierre)
INSERT ...
SELECT del.strcampana, del.strcodcobranza, 'dtmfechain21',
del.dtmfechain21, ins.dtmfechain21, ...

Saludos,
Ulises

On Tue, 8 Feb 2005 18:00:38 -0500, "andrey2001"
wrote:

Buenas Tardes Grupo...

Si me pueden ayudar con esta situacion...

CREATE TRIGGER mpTg_cambiofechas ON dbo.tbl_car_fechascobranza
FOR UPDATE
AS

insert into
tbl_car_cambiofechascobranza(strcampana,strcodcob,strcampomodifica,strvalorA
nterior,strvalornuevo,strusuario)

select del.strcampana,del.strcodcobranza,
case when update(dtmfechain21) then cast('dtmfechain21' as varchar(12)) when
update(dtmfechascierre) then cast('dtmfechascierre' as varchar(15)) end as
campo,
case when update(dtmfechain21) then del.dtmfechain21 when
update(dtmfechascierre) then del.dtmfechascierre end as valorant ,
case when update(dtmfechain21) then ins.dtmfechain21 when
update(dtmfechascierre) then ins.dtmfechascierre end as valnuevo,
ins.strusuario as usuario from deleted del inner join inserted ins on
del.strcampana+del.strcodcobranza=ins.strcampana+ins.strcodcobranza


CREATE TABLE [dbo].[tbl_car_cambiofechascobranza] (
[strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcodcob] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcampomodifica] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[intconsecutivo] [int] NOT NULL ,
[strvalorAnterior] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strvalornuevo] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strusuario] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfecsis] [datetime] NOT NULL

CREATE TABLE [dbo].[tbl_car_fechascobranza] (
[strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[strcodcobranza] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[strarea] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfechaIn21] [datetime] NOT NULL ,
[dtmfechasCierre] [datetime] NOT NULL ,
[strusuario] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dtmfecsis] [datetime] NOT NULL

el trigger me da este error
"syntax error converting the nvarchar value 'dtmfechain21' to a column of
data type int"


Mil Gracias...


Respuesta Responder a este mensaje
#3 andrey2001
09/02/2005 - 14:31 | Informe spam
Te entiendo Muy Bien Ulises...
Esa opcion ya la he trabajado...
Queria ver si lo podia hacer todo desde una consulta.

Gracias.

"ulises" escribió en el mensaje
news:
Tengo entendido que la clasúla que pregunta si una columna ha sido
modificada es IF UPDATE(), reemplaza el trigger por

CREATE TRIGGER mpTg_cambiofechas ON dbo.tbl_car_fechascobranza
FOR UPDATE
AS
IF UPDATE(dtmfechain21)
INSERT ...
SELECT del.strcampana, del.strcodcobranza, 'dtmfechain21',
del.dtmfechain21, ins.dtmfechain21, ...

IF UPDATE(dtmfechascierre)
INSERT ...
SELECT del.strcampana, del.strcodcobranza, 'dtmfechain21',
del.dtmfechain21, ins.dtmfechain21, ...

Saludos,
Ulises

On Tue, 8 Feb 2005 18:00:38 -0500, "andrey2001"
wrote:

>Buenas Tardes Grupo...
>
>Si me pueden ayudar con esta situacion...
>
>CREATE TRIGGER mpTg_cambiofechas ON dbo.tbl_car_fechascobranza
>FOR UPDATE
>AS
>
>insert into

tbl_car_cambiofechascobranza(strcampana,strcodcob,strcampomodifica,strvalor


A
>nterior,strvalornuevo,strusuario)
>
>select del.strcampana,del.strcodcobranza,
>case when update(dtmfechain21) then cast('dtmfechain21' as varchar(12))


when
>update(dtmfechascierre) then cast('dtmfechascierre' as varchar(15)) end


as
>campo,
>case when update(dtmfechain21) then del.dtmfechain21 when
>update(dtmfechascierre) then del.dtmfechascierre end as valorant ,
>case when update(dtmfechain21) then ins.dtmfechain21 when
>update(dtmfechascierre) then ins.dtmfechascierre end as valnuevo,
>ins.strusuario as usuario from deleted del inner join inserted ins on
>del.strcampana+del.strcodcobranza=ins.strcampana+ins.strcodcobranza
>
>
>CREATE TABLE [dbo].[tbl_car_cambiofechascobranza] (
> [strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL


,
> [strcodcob] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL


,
> [strcampomodifica] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS


NOT
>NULL ,
> [intconsecutivo] [int] NOT NULL ,
> [strvalorAnterior] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS


NOT
>NULL ,
> [strvalornuevo] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
>NULL ,
> [strusuario] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
> [dtmfecsis] [datetime] NOT NULL
>
>CREATE TABLE [dbo].[tbl_car_fechascobranza] (
> [strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL


,
> [strcodcobranza] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
>NULL ,
> [strarea] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
> [dtmfechaIn21] [datetime] NOT NULL ,
> [dtmfechasCierre] [datetime] NOT NULL ,
> [strusuario] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT


NULL ,
> [dtmfecsis] [datetime] NOT NULL
>
>el trigger me da este error
>"syntax error converting the nvarchar value 'dtmfechain21' to a column of
>data type int"
>
>
>Mil Gracias...
>
>

Respuesta Responder a este mensaje
#4 andrey2001
09/02/2005 - 14:36 | Informe spam
Trato de que cada que se modifiquen dos campos de fecha de la tabla
tbl_car_fechascobranza, se dispare el triguuer me inserte en la tabla
tbl_car_cambiofechascobranza el nombre del campo modificado y el valor
anterior a la modificacion y el valor con el que queda.

la sugerencia de Ulises es la forma como siempre lo he venido haciendo; es
solo que ahora queria probar esta nueva forma. Pero lo puedo seguir haciendo
como Ulise propone, no hay problema.

Mil Gracias MaX...



"MAXI" escribió en el mensaje
news:
Hola, no entiendo bien que queres hacer con ese trigger, pero el error es
que no puede convertir el valor del cast.

Porque no me explicas bien que necesitas que haga el trigger asi vemos si
tenemos otra manera de resolverlo



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"andrey2001" escribió en el mensaje
news:%23KQ%
> Buenas Tardes Grupo...
>
> Si me pueden ayudar con esta situacion...
>
> CREATE TRIGGER mpTg_cambiofechas ON dbo.tbl_car_fechascobranza
> FOR UPDATE
> AS
>
> insert into
>


tbl_car_cambiofechascobranza(strcampana,strcodcob,strcampomodifica,strvalorA
> nterior,strvalornuevo,strusuario)
>
> select del.strcampana,del.strcodcobranza,
> case when update(dtmfechain21) then cast('dtmfechain21' as varchar(12))
> when
> update(dtmfechascierre) then cast('dtmfechascierre' as varchar(15)) end


as
> campo,
> case when update(dtmfechain21) then del.dtmfechain21 when
> update(dtmfechascierre) then del.dtmfechascierre end as valorant ,
> case when update(dtmfechain21) then ins.dtmfechain21 when
> update(dtmfechascierre) then ins.dtmfechascierre end as valnuevo,
> ins.strusuario as usuario from deleted del inner join inserted ins on
> del.strcampana+del.strcodcobranza=ins.strcampana+ins.strcodcobranza
>
>
> CREATE TABLE [dbo].[tbl_car_cambiofechascobranza] (
> [strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL


,
> [strcodcob] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL


,
> [strcampomodifica] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS


NOT
> NULL ,
> [intconsecutivo] [int] NOT NULL ,
> [strvalorAnterior] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS


NOT
> NULL ,
> [strvalornuevo] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
> NULL ,
> [strusuario] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
> [dtmfecsis] [datetime] NOT NULL
>
> CREATE TABLE [dbo].[tbl_car_fechascobranza] (
> [strcampana] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL


,
> [strcodcobranza] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
> NULL ,
> [strarea] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
> [dtmfechaIn21] [datetime] NOT NULL ,
> [dtmfechasCierre] [datetime] NOT NULL ,
> [strusuario] [varchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT


NULL
> ,
> [dtmfecsis] [datetime] NOT NULL
>
> el trigger me da este error
> "syntax error converting the nvarchar value 'dtmfechain21' to a column


of
> data type int"
>
>
> Mil Gracias...
>
>
>


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