none
Recomendación

    Pregunta

  • Hola, estoy realizando un proyecto para un sistema para un comercio pequeño, me recomiendas que a la hora de registrar un producto con su código de barra solo permitan los tipo EAN-13, osea los de 13 dígitos o me recomiendas que acepte otros tipos también teniendo en cuenta que es para un comercio.

        Private Sub txtlectorcodigo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtlectorcodigo.TextChanged
            Dim txt = CType(sender, TextBox)
    
            If txt.TextLength = 13 Then
    Solo quiero un consejo, saludos
    • Editado Laura321 jueves, 12 de enero de 2017 3:28
    jueves, 12 de enero de 2017 3:26

Respuestas

  • Laura321,

    Debes indicar la propiedad Text:

    FirstOrDefault(Function(x) Convert.ToString(x.Cells(6).Value).Equals(CType(sender, TextBox).Text))


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 12 de enero de 2017 18:21
  • Laura321,

    No es correcto como determinas el fin de lectura de un código y recuerdo habértelo comentado en hilos anteriores. Un lector de código de barras es un dispositivo de entrada de datos (tal y como lo es el teclado), lee el código, lanza el beep y escribe el código en el control activo (el que tiene el foco), al final es de esperar que escriba un salto de línea (CR LF), puedes reconocer ese momento haciendo uso del evento KeyPress, algo como:

    Private Sub txtCodigo_KeyPress(sender As Object, e As KeyPressEventArgs)
    	If e.KeyChar = CChar(Keys.Enter) Then 'Se detecto la tecla Enter
    		MessageBox.Show("El código ha sido escrito")
    		'Realizar proceso
    	End If
    End Sub




    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    • Propuesto como respuesta Sergio Parra jueves, 12 de enero de 2017 7:36
    • Votado como útil Laura321 jueves, 12 de enero de 2017 18:31
    • Marcado como respuesta Laura321 jueves, 12 de enero de 2017 18:32
    jueves, 12 de enero de 2017 4:01
  • Laura321,

    Private Sub txtCodigo_KeyPress(sender As Object, e As KeyPressEventArgs)
    
    	If e.KeyChar = ChrW(Keys.Enter) Then
    		MessageBox.Show("Se presiono enter, se termino la lectura del código")
    	End If
    
    End Sub

    Intenta escribir un código y luego presionar ENTER, luego intenta escanear el código con el lector óptico.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    • Marcado como respuesta Laura321 jueves, 12 de enero de 2017 18:32
    jueves, 12 de enero de 2017 17:53

Todas las respuestas

  • Laura321,

    No es correcto como determinas el fin de lectura de un código y recuerdo habértelo comentado en hilos anteriores. Un lector de código de barras es un dispositivo de entrada de datos (tal y como lo es el teclado), lee el código, lanza el beep y escribe el código en el control activo (el que tiene el foco), al final es de esperar que escriba un salto de línea (CR LF), puedes reconocer ese momento haciendo uso del evento KeyPress, algo como:

    Private Sub txtCodigo_KeyPress(sender As Object, e As KeyPressEventArgs)
    	If e.KeyChar = CChar(Keys.Enter) Then 'Se detecto la tecla Enter
    		MessageBox.Show("El código ha sido escrito")
    		'Realizar proceso
    	End If
    End Sub




    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    • Propuesto como respuesta Sergio Parra jueves, 12 de enero de 2017 7:36
    • Votado como útil Laura321 jueves, 12 de enero de 2017 18:31
    • Marcado como respuesta Laura321 jueves, 12 de enero de 2017 18:32
    jueves, 12 de enero de 2017 4:01
  • Asi me dices que cambie el codigo?

    Private Sub txtCodigo_KeyPress(sender As Object, e As KeyPressEventArgs)
    	If e.KeyChar = CChar(Keys.Enter) Then 
    		 Dim txt = CType(sender, TextBox)
    
                If txt.TextLength = 13 Then
    ...
    	End If
    End Sub

    O de esta forma

     Private Sub txtcodigo_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
            If e.KeyChar = CChar(Keys.Enter) Then 
        Dim row As DataGridViewRow = DataGridView1.Rows.Cast(Of DataGridViewRow)().
                              FirstOrDefault(Function(x) Convert.ToString(x.Cells(6).Value).Equals(txt.Text))
    ...


    • Editado Laura321 jueves, 12 de enero de 2017 4:30
    jueves, 12 de enero de 2017 4:29
  • Laura321,

    No necesitas validar por la longitud del código, tras detectar que se escribió la tecla enter pasas a procesar directamente el código según veas conveniente.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 12 de enero de 2017 4:47
  • Me da el siguiente error:

    Si los reemplazo con los valores que me siguiere no funciona.

    Como podría solucionarlo?

    jueves, 12 de enero de 2017 16:50
  • Laura321,

    Private Sub txtCodigo_KeyPress(sender As Object, e As KeyPressEventArgs)
    
    	If e.KeyChar = ChrW(Keys.Enter) Then
    		MessageBox.Show("Se presiono enter, se termino la lectura del código")
    	End If
    
    End Sub

    Intenta escribir un código y luego presionar ENTER, luego intenta escanear el código con el lector óptico.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    • Marcado como respuesta Laura321 jueves, 12 de enero de 2017 18:32
    jueves, 12 de enero de 2017 17:53
  • Me muestra el mensaje lo que significa que funciona, pero no me encuentra el producto, antes funcionaba de forma correcta solo cambie lo mencionado anteriormente.

      If e.KeyChar = ChrW(Keys.Enter) Then
                MessageBox.Show("Se presiono enter, se termino la lectura del código")

      Dim row As DataGridViewRow = DataGridView1.Rows.Cast(Of DataGridViewRow)().
                          FirstOrDefault(Function(x) Convert.ToString(x.Cells(6).Value).Equals(CType(sender, TextBox)))

                If row IsNot Nothing Then

                    DataGridView1.ClearSelection()
                    row.Selected = True

    Al llegar al "If row isnot nothing then" me salta al "Else"

    No entiendo porque no me funciona si antes me funcionaba bien.


    • Editado Laura321 jueves, 12 de enero de 2017 18:17
    jueves, 12 de enero de 2017 18:13
  • Laura321,

    Debes indicar la propiedad Text:

    FirstOrDefault(Function(x) Convert.ToString(x.Cells(6).Value).Equals(CType(sender, TextBox).Text))


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 12 de enero de 2017 18:21
  • Gracias me sirvió la respuesta.
    jueves, 12 de enero de 2017 18:32