Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

MKN Reservas (Maro - Kayak Nerja)


Kayak Maro - Rutas y alquiler de kayak y tabla
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu inter�s (algunos de los avisos publicados)

01/feb./2019

Los moderadores, MVP y administradores podrán seguir editando, respondiendo o creando nuevos mensajes

Con idea de que puedan ayudar a responder e ir cerrando mensajes ;-)

  Foro: .NET VB Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 58190 - Pasar un Store Procedure con parametro output a Datagridview
IDAsuntoFechaNick 
58190 Pasar un Store Procedure con parametro output a Datagridview03/12/17 10:41zecv115   
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

 
(c) Guillermo 'guille' Som, 2005-2024  - foros.elGuille v1.0.6.3 (01/Jun/2021 12:45 GMT +2)  - (ASP.NET v4.0.30319.42000)
 
La hora GMT del servidor es: 08/10/2024 21:40:37 GMT