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 = '[email protected]',
@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
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 = '[email protected]',
@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


0