none
DatagridView de obtener datos

    Pregunta

  • Muy buenos días, Compañeros del Foro

    Tengo un datagridView el cual quiero que al escanear el código de barra a través de un textbox el producto guardado en la base de datos me muestre sus datos en el datagrid.

    Las columnas de este DatagridView son nombreproduc, costo, cantidad.

    Cada producto tiene un código de barras necesito que apenas capto el código de barras con el text se me complete el datagrid con los  campos.

    Los productos los tengo en una tabla en SQL.

    Es posible haces que un datagrid funcione de esta manera?

    Desde ya gracias.

    Lo que tengo de código por ahora es lo siguiente

    Public Function TraerProducto(ByVal codigoBarras As String) As DataTable Using cn As New SqlConnection("Data Source=MARTIN-PC;Initial Catalog=BASEDATOSCOMERCIO;Integrated Security=true")

    Dim ConsultaSQL As String = "SELECT * FROM Productos WHERE Codigo = @codigo"
                Dim cmd As New SqlCommand(ConsultaSQL, cn)

    cn.Open()

    cmd.Parameters.AddWithValue("@codigo", codigoBarras) End Using End Function Private Sub txtleerbarra_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtleerbarra.KeyDown If (e.KeyData = Keys.Enter) Then DataGridView2.DataSource = TraerProducto(txtleerbarra.Text) End If End Sub




    viernes, 21 de octubre de 2016 1:24

Respuestas

  • Hola Juan259,

    [-] ... necesito que apenas capto el código de barras con el text se me complete el datagrid con los  campos...

    Entonces deberías usar el evento TextChanged de tu TextBox para que se ejecute cuando se cambie la propiedad .Text, además deberías activar el atributo ReadOnly = True para que no puedan escribir, tan solo al asignarle el código comenzará las búsqueda.

    Por lo que el código quedaría :

       Public Function TraerProducto(ByVal codigoBarras As String) As DataTable
            Try
                Using cn As New SqlConnection("MiCadenaConexion")
    
                    Dim query As String = "SELECT nombreproduc, costo, cantidad " &
                                          "FROM Productos WHERE Codigo = @codigo"
    
                    Dim sda As New SqlDataAdapter(query, cn)
                    sda.SelectCommand.Parameters.AddWithValue("@codigo", codigoBarras)
    
                    Dim dt As New DataTable
                    sda.Fill(dt) 'Carga el resultado
    
                    Return dt
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                Return Nothing
            End Try
        End Function

    Y será ejecutado :

      Private Sub txtleerbarra_TextChanged(sender As Object, e As EventArgs) Handles txtleerbarra.TextChanged
            Dim txt = CType(sender, TextBox)
            'Si el campo no es vacío, busca...
            If txt.Text.Trim() <> String.Empty Then
                DataGridView2.DataSource = TraerProducto(txt.Text)
            End If
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Federico32113 viernes, 21 de octubre de 2016 16:54
    viernes, 21 de octubre de 2016 5:07

Todas las respuestas

  • Hola:

     Esta pregunta ya fue respondida en el hilo.

    DatagridView de capturar de datos

     Por favor analiza la respuesta que se te ofrecio, no necesitas hacer muchos cambios para que funcione.


    Saludos desde Monterrey, Nuevo León, México!!!

    viernes, 21 de octubre de 2016 2:22
  • Me podes ayudar con el código?Para agregar el productp al datagrid
    viernes, 21 de octubre de 2016 4:09
  • Hola Juan259,

    [-] ... necesito que apenas capto el código de barras con el text se me complete el datagrid con los  campos...

    Entonces deberías usar el evento TextChanged de tu TextBox para que se ejecute cuando se cambie la propiedad .Text, además deberías activar el atributo ReadOnly = True para que no puedan escribir, tan solo al asignarle el código comenzará las búsqueda.

    Por lo que el código quedaría :

       Public Function TraerProducto(ByVal codigoBarras As String) As DataTable
            Try
                Using cn As New SqlConnection("MiCadenaConexion")
    
                    Dim query As String = "SELECT nombreproduc, costo, cantidad " &
                                          "FROM Productos WHERE Codigo = @codigo"
    
                    Dim sda As New SqlDataAdapter(query, cn)
                    sda.SelectCommand.Parameters.AddWithValue("@codigo", codigoBarras)
    
                    Dim dt As New DataTable
                    sda.Fill(dt) 'Carga el resultado
    
                    Return dt
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                Return Nothing
            End Try
        End Function

    Y será ejecutado :

      Private Sub txtleerbarra_TextChanged(sender As Object, e As EventArgs) Handles txtleerbarra.TextChanged
            Dim txt = CType(sender, TextBox)
            'Si el campo no es vacío, busca...
            If txt.Text.Trim() <> String.Empty Then
                DataGridView2.DataSource = TraerProducto(txt.Text)
            End If
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Federico32113 viernes, 21 de octubre de 2016 16:54
    viernes, 21 de octubre de 2016 5:07