Principales respuestas
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
Respuestas
-
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.- Marcado como respuesta Joyce_ACModerator viernes, 13 de enero de 2017 16:05
-
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
-
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
Todas las respuestas
-
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
-
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
-
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. -
-
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
-
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
Dim row As DataGridViewRow = DataGridView1.Rows.Cast(Of DataGridViewRow)().
MessageBox.Show("Se presiono enter, se termino la lectura del código")
FirstOrDefault(Function(x) Convert.ToString(x.Cells(6).Value).Equals(CType(sender, TextBox)))
If row IsNot Nothing Then
DataGridView1.ClearSelection()
row.Selected = TrueAl 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
-
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.- Marcado como respuesta Joyce_ACModerator viernes, 13 de enero de 2017 16:05
-