Hacer que un textbox capture automáticamente a una base de datos

Tengo una base de datos llamada "tabla" con información de empleados (ID, Nombre, puesto, área, etc), y una hoja llamada "Registros" donde se registran las entradas y salidas de los trabajadores. Al momento de capturar con un lector de código de barras el numero de ID en la hoja de Registros, me devuelve la información correspondiente al trabajador así como la hora y fecha de registro... Ahora lo que estoy haciendo es un simple formulario donde solo tengo un textbox en el cual quiero que al capturar el código de barras con el lector de códigos, el dato se pase a la ultimafila disponible en la hoja "registros" en la columna "A" y así el programa me devuelva en la misma hoja la información del trabajador. El problema que tengo es que al capturar la ID de trabajador en el textbox, solo me captura el primer numero y obvio me marca error porque no encuentra el dato en la hoja tabla... El código consta de 13 dígitos, todos números..., ¿alguien tendrá una solución para que se pueda capturar todo el numeri (los 13 dígitos) y automáticamente de enter para que pase a la base datos?...

1 respuesta

Respuesta
1

H0la Bernabe:

Si estás utilizando un textbox de forma correcta, no hay motivo para que no tome los 13 dígitos del código, por lo que se me ocurren sólo dos problemas:

  1. El código de barra está mal construído
  2. La propiedad MaxLength del TextBox está restringiendo la cantidad de caracteres.

Primero revisa eso y luego seguimos con el resto.

S@lu2

El código de barras si funciona ya que si lo copio y lo pego en el textbox funciona, pero cuando lo leo directamente del lector de códigos solo me lee el primer dígito y no el numero completo y es por eso que me manda error, lo que quiero es que el textbox cuando se escriban los 13 dígitos me lance la acción determinada, no antes.

Me parece raro que no te lea el código entero.

Hagamos un experimento, crea un textbox totalmente independiente y prueba si se carga el código entero en ese textbox y me cuentas.

S@lu2

Quizás no me he hecho entender... el código si me lo lee completo, pero como tengo la indicación al textbox de que cuando cambie (Change), me mande la información a la hoja de registros, con el solo hecho de que se capture el primer numero en el textbox, este ya cambia y me manda la información a la hoja de registro, es decir no alcanza a registrar todo el numero, los 13 dígitos del código para enviármelo a la hoja... lo que quisiera saber es si puedo condicionar a que la longitud del textbox sea igual a 13 y entonces me mande la información, si es menor o mayor que 13 me marcaría un error y no me mande nada... así cuando lo capture con el lector me tendrá que leer el código total y validar si son los 13 dígitos para poder continuar con el código... eso es lo que necesito... muchas gracias

Perfecto!

Hasta dónde sé, las pistolas lectoras de código de barra dan un enter luego de terminar de leer el códio (para comprobarlo, abre un documento de texto y escanea el código varias veces, si cada vez que lees el código aparece en una línea diferente, entonces es como te digo). Si es así, no utilices el evento Change para esto e intenta utilizar el siguiente código (evento KeyDown)

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        'LO QUE DESEAS EJECUTAR UNA VEZ LEIDO EL CÓDIGO'
    End If
End Sub

Me comentas cómo te va con eso.

S@lu2

¡Gracias! Ya pude solucionarlo... Condicione al textbox para que si el total de caracteres sumaba 13 entonces me pasara la información al la hoja de cálculo... Saludos!!! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas