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
--Acá se va por el RAISEERROR ya que la longitud del campo 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.