none
Llenar un DatagridView con una consulta a SQL en visual basic 2010

    Question

  • Hola que tal, vuelvo de nuevo a los foros por que necesito su ayuda y de paso seguir motivandolos a colaborar con los que deseamos aprender día a día de esta hermosa profesión.

    Lo que deseo hacer es llenar un datagridview por medio de una consulta o un procedimiento almacenado, pero ninguna me sale, así que espero me puedan ayudar.

    les mostrare mis dos formas, tal ves este equivocado y ustedes pueden encontrar que estoy haciendo mal

    Forma 1: con Procedimiento almacenado

    Función que llama al procedimiento almacenado:

    Public Function llenarPerfil(ByVal nombre As String) As DataTable
            Try
                conectado()
                cmd = New SqlCommand("llenarPerfil")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn

                cmd.Parameters.AddWithValue("@nombrePuesto", nombre)

                If cmd.ExecuteNonQuery Then
                    Dim dt As New DataTable
                    Dim da As New SqlDataAdapter(cmd)
                    da.Fill(dt)
                    Return dt
                Else
                    Return Nothing
                End If

            Catch ex As Exception
                MsgBox(ex.Message)
                Return Nothing
            Finally
                desconectado()
            End Try
        End Function

    este es el procedimiento almacenado, aclaro es SQL 2008

    ALTER proc [dbo].[llenarPerfil]
    @nombrePuesto varchar(10)
    as
    select *from cursosPerfil
    where nombrePuesto  =@nombrePuesto

    y la programación para obtener esa consulta lo ando en el LostFocus del Textbox que es parámetro que envío:

    Try
                Dim func As New funcionCursosPerfil
                Dim dt As DataTable = func.llenarPerfil(nombre:=txtNomPuesto.Text)
                dgvCursosPerfil.DataSource = dt

            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

    esta parte no presenta errores, pero cuando debe mostrarme el resultado lo único que hace el datagridview es poner una columna nada mas pero en blanco.

    forma 2: con una consulta ya en la programación:

    Try
                Dim da As New SqlDataAdapter("select *from cursosPerfil where nombrePuesto =" & txtNomPuesto.Text, con)
                Dim ds As New DataSet
                da.Fill(ds)
                dgvCursosPerfil.DataSource = ds.Tables(0)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

    pero me arroja un error de sintaxis incorrecta cerca de 'de'

    espero me sepan instruir, muchas gracias a todos.


    Wednesday, February 27, 2013 2:07 PM

All replies

  • Hola el error es porque en el SQL Server los campos texto van entre ' ' entonces deberías poner:

    Dim da As New SqlDataAdapter("select *from cursosPerfil where nombrePuesto ='" & txtNomPuesto.Text & "'", con)

    Pruebalo y cuéntanos como te fue.


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    Wednesday, February 27, 2013 2:22 PM
  • hola

    pero alli usas un

    where nombrePuesto  =@nombrePuesto

    como esperas que uso devuelve registros si es un = lo que asignas al campo, deberias suar un like para buscar de forma aproximada

    where nombrePuesto  LIKE '%' + @nombrePuesto + '%'

    asi si devolvera uan lista de coincidencias

    salidos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Wednesday, February 27, 2013 2:25 PM
  • Bueno no se puede marcar las dos respuesta como "Marcar como Repuestas", pero de las dos formas trabaja, ya ven he aprendido algo nuevo, muchas gracias a Jose Barba y a Leandro Tuttini, me han sido de mucha ayuda.


     
    Wednesday, February 27, 2013 2:35 PM