Problemas con el status de los SP con ADO

18/01/2005 - 22:52 por Leonardo Azpurua | Informe spam
Hola.

Este es un SP simplísimo, para ejemplificar un problema planteado por un
usuario en el grupo de VB y para el que aun no encuentro solucion:

ALTER PROCEDURE DBO.AddRGemma
(@Grp NVARCHAR(3))
AS
INSERT INTO Gemma (Grupo, Importe1, Importe2) VALUES (@Grp, 0, 0)
IF @@ERROR <> 0
BEGIN
RAISERROR( 'ERROR EN AddRGemma', 16, 10)
END

si el SP se corre desde el QueryAnalizer pasando en @Grp un valor ya
registrado en Grupo (es la PK), se muestran tres mensajes de error: dos
generados por el servidor, seguidos por el que se levanta desde el SP.

Pero cuando la aplicacion se corre desde VB6, la coleccion Errors de la
conexion se llena solo con los dos primeros errores.

Alguien me sugirió que reemplazara RAISERROR por PRINT, pero el resultado es
el mismo.

Se me ocurrió incluir un PRINT antes del INSERT INTO, y la situacion es
muchísimo peor: no se produce ningún error en la aplicacion cliente. Si uno
examina la coleccion Errors de la conexión, solo hay una entrada cuya
descripcion es el texto enviado en Print. La instruccion, por supuesto, no
se ejecuta, pero no hay ninguna advertencia.

Sin duda, el problema no esta en SQL Server, sino en la interfaz (el
proveedor OLEDB para SQL Server, instalado con ADO 2.8). De cualquier
manera, no creo que se pierda nada preguntando aquí.

Salud!
 

Leer las respuestas

#1 MAXI
19/01/2005 - 00:22 | Informe spam
Hola Leo como estas? a ver, algunas modificaciones a ese SP para ver que
sucede ;)

ALTER PROCEDURE DBO.AddRGemma
SET NOCOUNT ON
(@Grp NVARCHAR(3))
AS
INSERT INTO Gemma (Grupo, Importe1, Importe2) VALUES (@Grp, 0, 0)
IF @@ERROR <> 0
BEGIN
RAISERROR( 'ERROR EN AddRGemma', 16, 10)
RETURN 99
END


PD: proba con el mdac 2.8 porfavor y contame si con esto te funciona :-)



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

"Leonardo Azpurua" <l e o n a r d o (arroba) m v p s (punto) o r g> escribió
en el mensaje news:uXfVnca$
Hola.

Este es un SP simplísimo, para ejemplificar un problema planteado por un
usuario en el grupo de VB y para el que aun no encuentro solucion:

ALTER PROCEDURE DBO.AddRGemma
(@Grp NVARCHAR(3))
AS
INSERT INTO Gemma (Grupo, Importe1, Importe2) VALUES (@Grp, 0, 0)
IF @@ERROR <> 0
BEGIN
RAISERROR( 'ERROR EN AddRGemma', 16, 10)
END

si el SP se corre desde el QueryAnalizer pasando en @Grp un valor ya
registrado en Grupo (es la PK), se muestran tres mensajes de error: dos
generados por el servidor, seguidos por el que se levanta desde el SP.

Pero cuando la aplicacion se corre desde VB6, la coleccion Errors de la
conexion se llena solo con los dos primeros errores.

Alguien me sugirió que reemplazara RAISERROR por PRINT, pero el resultado
es el mismo.

Se me ocurrió incluir un PRINT antes del INSERT INTO, y la situacion es
muchísimo peor: no se produce ningún error en la aplicacion cliente. Si
uno examina la coleccion Errors de la conexión, solo hay una entrada cuya
descripcion es el texto enviado en Print. La instruccion, por supuesto, no
se ejecuta, pero no hay ninguna advertencia.

Sin duda, el problema no esta en SQL Server, sino en la interfaz (el
proveedor OLEDB para SQL Server, instalado con ADO 2.8). De cualquier
manera, no creo que se pierda nada preguntando aquí.

Salud!


Preguntas similares