none
Como Mostrar Resultado de Consulta Sql en un DataGridView VB.NET RRS feed

  • Pregunta

  • Hola Gente del Foro.

    Estoy desarrollando una aplicacion con vb.net 2015 para ejecutarla de manera local 
    y una base de datos sqlserver.

    Al ejecutar la aplicacion me sale un error de convercion

        Private Function GetData() As DataTable
            Try
                Using con As New SqlConnection(My.Settings.Conexion)
                    Dim sql As String = "Select K.NomFam, O.Nombre, N.Estado, L.PteAtacada, Fg.Nombre, Ds.descripcion, Dg.DañoGen, De.DañoEsp
                        from Plaga P Inner Join FamInsec K on (P.id_Fam = K.id_Fam)
                                Inner Join OrInsectyAcaros O on (P.id_Ord=O.id_Ord)
                                Inner join Fenologia N on (P.id_fen = N.id_fen)
                                Inner join OPlanDañados L on (P.id_Org=L.id_Org)
                                inner JOin FormGeneral Fg on (P.id_FormGen = Fg.id_FormGen)
                                inner join DescriFomEsp Ds on (P.FolFE= Ds.FolFE)
                                inner join DañoGen Dg on (P.FolDG=Dg.FolDG)
                                inner Join DañoEsp De on (P.FolDE= De.FolDE)
                    Where (P.id_Ord = '%" & Trim(ListBox1.Text) & "%') and (K.id_Fam Like '%" & Trim(ListBox2.Text) & "%') and ( Ds.FolFE Like '%" & Trim(ListBox3.Text) & "%')"
                    Dim da As New SqlDataAdapter(sql, con)
                    Dim dt As New DataTable("plaga")
                    da.Fill(dt)
                    Return dt
                End Using

            Catch
                Throw

            End Try

        End Function

    martes, 7 de marzo de 2017 22:57

Respuestas

  • Hola Isa1801,

    No deberías agregar los parámetros mediante concatenación, deberías parametrizar la consulta usando la propiedad Parameters(...).

    A simple vista hay un error (le falta el operador LIKE).

    Where (P.id_Ord = '%" & Trim(ListBox1.Text) & "%') 


    Usando parámetros sería (última línea de tu query):

    Where ( P.id_Ord Like @p1 ) and ( K.id_Fam Like @p2 ) and ( Ds.FolFE Like @p3 )"

    Y para enviar los parámetros :

    Dim da As New SqlDataAdapter(sql, con)
    da.SelectCommand.Parameters.AddWithValue("@p1", String.Format("%{0}%", ListBox1.Text))
    da.SelectCommand.Parameters.AddWithValue("@p2", String.Format("%{0}%", ListBox2.Text))
    da.SelectCommand.Parameters.AddWithValue("@p3", String.Format("%{0}%", ListBox3.Text))
    
    Dim dt As New DataTable("plaga")

    Agregar la función Trim() si crees que realmente es conveniente.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Isa1801 miércoles, 8 de marzo de 2017 18:58
    miércoles, 8 de marzo de 2017 0:50

Todas las respuestas

  • Asigna el datatable que envía getData() al datasource del datagridview

    datagridview.datasource = getData()

    miércoles, 8 de marzo de 2017 0:26
  • Hola Isa1801,

    No deberías agregar los parámetros mediante concatenación, deberías parametrizar la consulta usando la propiedad Parameters(...).

    A simple vista hay un error (le falta el operador LIKE).

    Where (P.id_Ord = '%" & Trim(ListBox1.Text) & "%') 


    Usando parámetros sería (última línea de tu query):

    Where ( P.id_Ord Like @p1 ) and ( K.id_Fam Like @p2 ) and ( Ds.FolFE Like @p3 )"

    Y para enviar los parámetros :

    Dim da As New SqlDataAdapter(sql, con)
    da.SelectCommand.Parameters.AddWithValue("@p1", String.Format("%{0}%", ListBox1.Text))
    da.SelectCommand.Parameters.AddWithValue("@p2", String.Format("%{0}%", ListBox2.Text))
    da.SelectCommand.Parameters.AddWithValue("@p3", String.Format("%{0}%", ListBox3.Text))
    
    Dim dt As New DataTable("plaga")

    Agregar la función Trim() si crees que realmente es conveniente.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Isa1801 miércoles, 8 de marzo de 2017 18:58
    miércoles, 8 de marzo de 2017 0:50
  • Hola muchas gracias con tu ayuda pude resolver mi problema se agradece
    miércoles, 8 de marzo de 2017 18:58