Problema con el FILL del adapter
Publicado por vlg1971 (48 intervenciones) el 01/07/2009 18:04:55
Hola el problema que estoy teniendo es que recargo un datatable mediante un procedimiento almacenado de la siguiente manera:
Dim pComm As SqlCommand
Dim pParam As SqlParameter
Dim pAdapter As SqlDataAdapter
Dim pNumFilas As Integer
Try
pAdapter = New SqlDataAdapter
pComm = New SqlCommand("SQLAlmacenSelect", argCon, argTrans)
pComm.CommandType = CommandType.StoredProcedure
pAdapter.SelectCommand = pComm
pAdapter.Fill(argDs.Almacen)
Catch ex As SqlException
Select Case ex.Number
Case 2627
'Solamente en caso de que tengamos algún campo con Restricción UNIQUE
Throw New BTC.ApplicationException("El Magatzem ja existeix a la base de dades")
Case Else
Throw ex
End Select
Catch ex As Exception
Throw ex
End Try
Pues bien el procedimiento almacenado tiene un RAIERROR que se ejecuta si @@ROWCOUNT > 0, paso codigo del procedimiento
SET NOCOUNT ON;
DECLARE @SQL nvarchar(3000)
SELECT IdAlmacen, Almacen, ts FROM dbo.Almacen
IF (@@ROWCOUNT > 0)
BEGIN
RAISERROR('Movie %s is not inserted.', 16, 1)
--RETURN -100
END
El problema que estoy teniendo es que el RAISEERROR nunca se ejecuta, creo que es debido a que el FILL una vez que lee los datos deja el procedimiento y no pasa por el RAISEERROR he llegado a esta conclusion ya que cuando ejecuto el procedimiento desde el analizador de consultas SQL si que lo hace, ¿ALGUIEN ME PUEDE ORIENTAR SOBRE ESTE TEMA?
GRACIAS
Dim pComm As SqlCommand
Dim pParam As SqlParameter
Dim pAdapter As SqlDataAdapter
Dim pNumFilas As Integer
Try
pAdapter = New SqlDataAdapter
pComm = New SqlCommand("SQLAlmacenSelect", argCon, argTrans)
pComm.CommandType = CommandType.StoredProcedure
pAdapter.SelectCommand = pComm
pAdapter.Fill(argDs.Almacen)
Catch ex As SqlException
Select Case ex.Number
Case 2627
'Solamente en caso de que tengamos algún campo con Restricción UNIQUE
Throw New BTC.ApplicationException("El Magatzem ja existeix a la base de dades")
Case Else
Throw ex
End Select
Catch ex As Exception
Throw ex
End Try
Pues bien el procedimiento almacenado tiene un RAIERROR que se ejecuta si @@ROWCOUNT > 0, paso codigo del procedimiento
SET NOCOUNT ON;
DECLARE @SQL nvarchar(3000)
SELECT IdAlmacen, Almacen, ts FROM dbo.Almacen
IF (@@ROWCOUNT > 0)
BEGIN
RAISERROR('Movie %s is not inserted.', 16, 1)
--RETURN -100
END
El problema que estoy teniendo es que el RAISEERROR nunca se ejecuta, creo que es debido a que el FILL una vez que lee los datos deja el procedimiento y no pasa por el RAISEERROR he llegado a esta conclusion ya que cuando ejecuto el procedimiento desde el analizador de consultas SQL si que lo hace, ¿ALGUIEN ME PUEDE ORIENTAR SOBRE ESTE TEMA?
GRACIAS
Valora esta pregunta


0