Buen día, espero puedan ayudarme con un inconveniente que estoy teniendo.
Tengo un store procedure en sqlserver el cual tiene parametros de entrada y de salida, el objeto de este sp es según uno de los parámetros se ejecute diferentes acciones.
Puede mostrar el resultado de una consulta, puede insertar, actualizar o eliminar un registro especifico en una tabla, puede buscar un registro especifico y mostrarlo en los parámetros de salida.
Dentro del SQL Management he podido ejecutar todo ello sin problema.
Ahora estoy queriendo utilizar este sp en vb.net para llenar un datagridview, es en este punto donde me he quedado atorado ya que no me ha sido posible lograrlo.
He realizado una prueba con otro sp que solo hace un select en la tabla con parámetros de entrada que filtra el resultado y si me llena el datagridview.
No se si el problema es que el sp tenga parámetros de salida o las multiples opciones que tiene, o si es que haya algo adicional que hacer en vb.net
STORE PROCEDURE
CREATE Procedure [dbo].[sp_FBalance]
@Opcion Varchar(10),
--List = Muestra lista completa o según filtro
--Busq = Busca un Registro Especifico, si no encuentra @Exist = N
--Grabar = Inserta o Actualiza el registro según corresponda
--Insert = Inserta Nuevo Registro
--Update = Actualiza Registro Existente
--Delete = Elimina Registro Existente
@Id_FFBBGG Varchar(4) Output,
@Descripcion Varchar(100) Output,
@Id_FFBBGG2 Varchar(4) Output,
@Filtro Varchar(10) = '%',
@Existe Varchar(1) Output
as Begin
If @Opcion = 'List'
Begin
Set @Filtro = '%' + @Filtro + '%'
Select
P1.Id_FFBBGG,
P1.Descripcion,
P1.Id_FFBBGG2
From tb_FBalance [P1]
Where
P1.Id_FFBBGG Like @Filtro
or P1.Descripcion Like @Filtro
End
If @Opcion = 'Busq'
Begin
Select
@Existe = Count(P1.Id_FFBBGG)
,@Id_FFBBGG = P1.Id_FFBBGG
,@Descripcion = P1.Descripcion
,@Id_FFBBGG2 = P1.Id_FFBBGG2
From tb_FBalance [P1]
Where
P1.Id_FFBBGG Like @Id_FFBBGG
Group By P1.Id_FFBBGG, P1.Descripcion, P1.Id_FFBBGG2
End
If @Opcion = 'Grabar' --Insertar o Actualizar
Begin
If (Select
Count(*) From tb_FBalance Where Id_FFBBGG Like @Id
_FFBBGG) = 0
Begin
Insert Into tb_FBalance
Values
(
@Id_FFBBGG
,@Descripcion
,@Id_FFBBGG2
)
End
Else
Begin
Update tb_FBalance
Set
Id_FFBBGG = @Id_FFBBGG
,Descripcion = @Descripcion
,Id_FFBBGG2 = @Id_FFBBGG2
End
End
If @Opcion = 'Delete'
Begin
Delete From tb_FBalance
Where Id_FFBBGG Like @Id_FFBBGG
End
End
VB.NET
Private Sub LLenarDgv()
Dim strCnn As String = "Server=.\SqlExpress;
Database=***; Uid=***; Pwd=***"
Using cnn As SqlConnection = New SqlConnection(strCnn)
cnn.Open()
Using cm As
SqlCommand = New SqlCommand("sp_FBalance", cnn)
cm.CommandType = CommandType.StoredProcedure
cm.Parameters.Add("@Opcion", SqlDbType.VarChar).Value = "List"
cm.Parameters.Add("@Filtro", SqlDbType.VarChar).Value = ""
Using da As SqlDataAdapter = New SqlDataAdapter(cm)
Dim dt As New DataTable("x")
da.Fill(dt)
DataGridView1.DataSource = dt
End Using
End Using
End Using
End Sub