Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/04/2005, 10:46
Gustavo2005
 
Fecha de Ingreso: enero-2005
Mensajes: 43
Antigüedad: 19 años, 4 meses
Puntos: 0
Ayuda SQL Server->RAISEERROR->VB6

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.