Hola Muchachos:
Tengo el problema de que en una aplicacion VB6 no me
captura los errores "fabricados" con RAISEERROR en Stores
Procedures de SQL Server que invoco desde VB6 utilizando
el objeto ADODB.Command
El tema es que invoco el objetoCommand.Execute, ejecuta el
stored procedure pero -a pesar de tener la seguridad de
que el RAISEERROR fue invocado- no me devuelve nada en la
coleccion del objeto VB6->Err ni tampoco en la coleccion
objetoCommand.Activeconnection.Errors
Les mado un ejemplito:
VB6
Private Sub Command1_Click()
On Error Resume Next
Dim lobjCommand As ADODB.Command
Set lobjCommand = New ADODB.Command
With lobjCommand
'//Inicializa comando
.CommandTimeout = 60
.CommandType = adCmdStoredProc
.ActiveConnection = DBSeguridad
'//Ejecuta comando
.CommandText = "_Pruebas"
.Execute
End With
Set lobjCommand = Nothing
End Sub
SQL SERVER
(En este ejemplo se va por el RAISEERROR / RETURN en el
segundo INSERT ya que la longitud del campo que se
pretende insertar es mayor a la definida en la tabla - NO
ME CAPTURA EL ERROR EN VISUAL!!!)
CREATE PROCEDURE _Pruebas
AS
DECLARE @myerror int
DECLARE @mydescerror varchar(100)
INSERT INTO _Test (Test) VALUES ('Texto Uno')
SET @myerror = @@ERROR
IF @myerror <> 0
Begin
SET @mydescerror = 'Se produjo el error: ' + convert
(varchar,@myerror) + ' en la instrucción: INSERT INTO
_Test'
RAISERROR (@mydescerror, 16, 1)
Return 4000
end
que se pretende insertar es mayor a la definida en la tabla
INSERT INTO _Test (Test) VALUES ('Texto Dos
SDFSDFSDFSDFSDFS')
SET @myerror = @@ERROR
IF @myerror <> 0
Begin
SET @mydescerror = 'Se produjo el error: ' + convert
(varchar,@myerror) + ' en la instrucción: INSERT INTO
_Test'
RAISERROR (@mydescerror, 16, 1)
Return 4000
end
INSERT INTO _Test (Test) VALUES ('Texto Tres')
SET @myerror = @@ERROR
IF @myerror <> 0
Begin
SET @mydescerror = 'Se produjo el error: ' + convert
(varchar,@myerror) + ' en la instrucción: INSERT INTO
_Test'
RAISERROR (@mydescerror, 16, 1)
Return 4000
end
Gracias!!
Gustavo.
Leer las respuestas