Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

VB6->SQLSERVER->RAISEERROR

Estas en el tema de VB6->SQLSERVER->RAISEERROR en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/04/2005, 10:49
 
Fecha de Ingreso: enero-2005
Mensajes: 43
Antigüedad: 19 años, 3 meses
Puntos: 0
VB6->SQLSERVER->RAISEERROR

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
'Compruebo en modo DEBBUG que no me trae nada en las
'colecciones de errores luego del .Execute
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:43.