Hola, tengo un problemita que me ha sacado como 20 canas (además de que he
intentado enviar este mensaje unas 1000 veces y no se por que no me ha
pasado).
resulta que tengo un trigger que envia un e-mail cuando hacen una inserción
de datos en una tabla (adelante lo pongo), pero cuando estan haciendo el
movimiento en un programa de fox sale un error asi..
"No es posible devolver la transaccion manual para las vistas.. posible
causa.. Mensaje: Error de conectividad: [Microsoft][ODBC SQL Server
Driver][sql server] the ROLLBACK TRANSACTION request has no corresponding
BEGIN TRANSACTION"
y otro que dice
"Mensaje: Error de conectividad: [Microsoft][ODBC SQL Server Driver][SL
Server]A cursor with the name 'rc' does not exist"
Alguien sería tan amable de ayudarme??
Este es mi trigger...
CREATE TRIGGER [MvtoFac_Ins] ON [dbo].[MVTOFAC]
FOR INSERT AS
SET XACT_ABORT ON
DECLARE @rcm int
DECLARE @SiNo INT
DECLARE @Desde NVARCHAR(4000),
@Desde_Nombre NVARCHAR(4000),
@Para NVARCHAR(4000),
@Titul NVARCHAR(4000),
@Mensaje NVARCHAR(4000),
@Mensaje1 NVARCHAR(4000),
@Servidor NVARCHAR(4000),
@MensajeDef NVARCHAR(4000)
SET @SiNo = 0
SET @Desde = Suser_sname()
SET @Desde_Nombre = HOST_NAME()
SET @Para = 'Alexander_Gomez@admon'
SET @Titul = 'Orden Facturada'
SET @Mensaje 'Orden,Titulo,Cliente,Trabajo,Nombre,Pedido,Factura,VrUnidad,Cantidad,VrTota
l' + CHAR(13) + CHAR(10)
SET @Mensaje1 = ' '
SET @Servidor = 'SERVIDOR'
DECLARE @Cantidad NUMERIC(15,2), @Factura CHAR(10), @Nombre CHAR(60),
@NPedido CHAR(10), @OrdenNro CHAR(10),@Producto CHAR(20), @ValorUnit
NUMERIC(17,4), @Titulo CHAR(60)
DECLARE @FacBruto NUMERIC(15,2), @FacCodMoneda CHAR(5), @FacFactura
CHAR(10),
@FacFecha DATETIME, @Nit CHAR(15), @NomCli CHAR(60), @FacNota CHAR(255),
@FacOrden CHAR(10), @FacTipoDcto CHAR(2), @FacTipoVta CHAR(5)
DECLARE rcmvto CURSOR GLOBAL SCROLL FOR
SELECT Ins.CANTIDAD, Ins.FACTURA, Ins.NOMBRE, Ins.NPEDIDO, Ins.ORDENNRO,
Ins.PRODUCTO, Ins.VALORUNIT, Lot.DESCRIPCIO
FROM inserted Ins INNER JOIN MTLOTE Lot ON Ins.ORDENNRO = Lot.CODLOTE
WHERE ((LEFT(FACTURA,3) = '211' AND
((ORDENNRO)>'0')) OR
(LEFT(FACTURA,3) = '200')AND
((ORDENNRO)>'0'))
OPEN rcmvto
FETCH FIRST FROM rc
INTO @Cantidad, @Factura, @Nombre, @NPedido, @OrdenNro, @Producto,
@ValorUnit, @Titulo
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE rtfac CURSOR LOCAL SCROLL FOR
SELECT FAC.BRUTO, FAC.CODMONEDA, FAC.FACTURA, FAC.FECHA, FAC.NIT,
CLI.NOMBRE,
FAC.NOTA, FAC.ORDEN, FAC.TIPODCTO, FAC.TIPOVTA
FROM FACTURAS FAC INNER JOIN CLIENTES CLI ON FAC.NIT = CLI.NIT
WHERE (FAC.FACTURA = @Factura AND FAC.TIPODCTO = 'FA' AND (FAC.TIPOVTA '2' OR FAC.TIPOVTA = '1')) OR
(FAC.FACTURA = @Factura AND FAC.TIPODCTO = 'FR' AND (FAC.TIPOVTA = '2' OR
FAC.TIPOVTA = '1'))
OPEN rtfac
FETCH FIRST FROM rtfac
INTO @FacBruto, @FacCodMoneda, @FacFactura, @FacFecha, @Nit, @NomCli,
@FacNota,
@FacOrden, @FacTipoDcto, @FacTipoVta
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SiNo = 1
SET @Mensaje1 = @Mensaje1 + CHAR(13) + CHAR(10)
+ 'Orden ' + @OrdenNro + CHAR(13) + CHAR(10)
+ 'Titulo ' + @Titulo + CHAR(13) + CHAR(10)
+ 'Cliente ' + @NomCli + CHAR(13) + CHAR(10)
+ 'Producto ' + @Producto + '-' + @Nombre + CHAR(13) + CHAR(10)
+ 'Pedido ' + @NPedido + CHAR(13) + CHAR(10)
+ 'Factura ' + @Factura + CHAR(13) + CHAR(10)
+ 'VrUnidad ' + @ValorUnit + CHAR(13) + CHAR(10)
+ 'Cantidad ' + @Cantidad + CHAR(13) + CHAR(10)
+ 'VrTotal ' + @FacBruto + CHAR(13) + CHAR(10)
SET @Mensaje = @Mensaje + @OrdenNro + ',' + @Titulo + ',' + @NomCli + ','
+ @Producto
+ ',' + @Nombre + ',' + @NPedido + ',' + @Factura + ',' + @ValorUnit + ','
+
@Cantidad + ',' + @FacBruto + CHAR(13) + CHAR(10)
FETCH NEXT FROM rt
INTO @FacBruto, @FacCodMoneda, @FacFactura, @FacFecha, @Nit, @NomCli,
@FacNota,
@FacOrden, @FacTipoDcto, @FacTipoVta
END
CLOSE rtfac
DEALLOCATE rtfac
FETCH NEXT FROM rcmvto
INTO @Cantidad, @Factura, @Nombre, @NPedido, @OrdenNro, @Producto,
@ValorUnit, @Titulo
END
CLOSE rcmvto
DEALLOCATE rcmvto
IF @SiNo = 1
BEGIN
SET @MensajeDef = @Mensaje1 + CHAR(10) + CHAR(13) + 'Datos Para Excel' +
CHAR(10) + CHAR(13) + @Mensaje
EXEC @rcm = master.dbo.xp_smtp_sendmail
@FROM = @Desde,
@FROM_NAME = @Desde_Nombre,
@TO = N'alexander_gomez@admon',
@subject = @Titul,
@message = @MensajeDef,
@server = @Servidor
END
SET XACT_ABORT OFF
Leer las respuestas