SQL Server - Trigger para Exportar a Excel

   
Vista:

Trigger para Exportar a Excel

Publicado por ROQUE AVILEZ VILORIA (4 intervenciones) el 21/12/2012 18:20:16
Señores Expertos, cordial saludo. Mi problema es:

Intento hacer un trigger for update que me permite llenar un archivo de excel con el resultado de una consulta y lo envíe como adjunto a un correo. El código aquí debajo funciona de manera manual, pero al generarse el evento UPDATE no reconoce el valor de la variable que le envío para seleccionar los registros que necesito escribir. De manera manual funciona, pero dentro del trigger no. Este es el código:

ALTER TRIGGER [dbo].[MODTRASLADO] ON [dbo].[TRADE]
FOR UPDATE AS
BEGIN
DECLARE @Remision char(12)
SET @Remision = LTRIM(RTRIM((SELECT NRODCTO FROM inserted)))
--CON ESTE LLENO EL EXCEL
INSERT INTO OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0',
'Data Source = C:\COMUN\TRASLADOS\TRASLADO.xls;Extended Properties = EXCEL 12.0')...[TRASLADO$]
SELECT MTPROCLI.NOMBRE AS BODEGA, TRADE.NRODCTO AS REMISION, CAST(TRADE.FECHA AS DATE) as FECHARE,
MVTRADE.PRODUCTO AS CODIGO,MVTRADE.NOMBRE AS DESCRIPCION, CAST(MVTRADE.CANTIDAD AS INT)AS CANT,
MVTRADE.UNDVENTA AS UND, CAST(MVTRADE.VALORUNIT AS INT) AS VALORUNI FROM TODOTERRENO..TRADE,
TODOTERRENO..MVTRADE, TODOTERRENO..MTPROCLI WHERE MTPROCLI.NIT = TRADE.NIT AND MVTRADE.NRODCTO = TRADE.NRODCTO
AND MVTRADE.ORIGEN = TRADE.ORIGEN AND MVTRADE.TIPODCTO = TRADE.TIPODCTO AND MVTRADE.NRODCTO = @Remision AND
TRADE.ORIGEN = 'FAC' AND TRADE.TIPODCTO = 'R2'
--CON ESTE ENVIO EL CORREO CON EL ADJUNTO
EXEC msdb.dbo.sp_send_dbmail @recipients = 'sistemas1@ferromotores.com',
@body = 'Se ha Creado la Remisión (TRASLADO) con los datos adjuntos',
@file_attachments = 'C:\Comun\TRASLADOS\TRASLADO.xls', @subject = 'Notificación de Traslado enviado',
@profile_name = 'Administradores'
END

Espero haber sido claro. Agradezco inmensamente alguna idea que me diga por qué dentro del trigger no funciona.

Roque Avilez.
Ing.
Colombia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Trigger para Exportar a Excel

Publicado por Isaias (3180 intervenciones) el 26/12/2012 17:19:06
¿Porque lo quieres hacer dentro de un TRIGGER?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Trigger para Exportar a Excel

Publicado por ROQUE AVILEZ VILORIA (4 intervenciones) el 27/12/2012 16:14:26
Isaias, gracias por atender.

Lo necesito en un trigger porque se requiere hacer la notificación por email de manera automática en el momento que se actualice o se realize una nuevo registro. No se si existe otra forma, pienso que a través de el trigger es que resuelvo lo solicitado.

Gracias nuevamente.

Quedo atento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Trigger para Exportar a Excel

Publicado por Isaias (3180 intervenciones) el 27/12/2012 17:09:20
Se supone (solo eso), que si cumples con las reglas del diseño de una base de datos, NO deberia haber UPDATE, INSERT mucho menos DELETE, directos a tus tablas.

Todo debia resolverse por STORE PROCEDURES, entonces, dada esta condicion, deberias programar tu envio en los PROCEDURES que atacan a tus tablas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Trigger para Exportar a Excel

Publicado por ROQUE AVILEZ VILORIA (4 intervenciones) el 28/12/2012 16:11:57
Buenos días.

Amigo, por supuesto que si se cumple ese precepto. Los Insert, Update y Delete se realizan a través de una aplicación de cliente servidor tipo ERP.

Ahora, como debería realizarlo a través de un procedimiento almacenado?

Me podría orientar?

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Trigger para Exportar a Excel

Publicado por Isaias (3180 intervenciones) el 28/12/2012 18:04:13
En los PROCEDIMIENTOS ALMACENADOS que atacan la tabla MODTRASLADO, coloca tu envio de mensaje o de correo, asi de simple y por cada uno de los procedimientos almacenados, has lo mismo.

O bien, crea un procedimiento almacenado que envie tu correo y por cada procedimiento que ataque a la tabla en cuestión, mandas ejecutar dicho procedimiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Trigger para Exportar a Excel

Publicado por ROQUE AVILEZ VILORIA (4 intervenciones) el 28/12/2012 19:15:24
Ok.

Intentaré realizar esto. Y comentaré como me va.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar