Guardar valores en un campo dependiendo del parámetro que este tenga

Como estas

Quiero saber como puedo guardar en un campo un valor según la cantidad de caracteres que este tenga, por ejemplo

La tabla cuenta con 3 capos uno que solo se utilizara para guardar labores numéricos de 2 dígitos en segundo para guardar valores de 4 dígitos y el tercero para guardar valores de 6 dígitos esto lo quiero hacer desde un único tex box y que el pueda identificar según lo ya indicado

1 respuesta

Respuesta
1

Si bien se puede hacer de otras maneras, te comento la más fácil. Tenemos un formulario basado en la tabla en cuestión con los 3 campos (visibles o no), control1, control2 y control3 y un control para introducir el valor, Mi_control.

Entramos en las propiedades del control "MI_control" y dónde pone, "Después de actualizar", hacemos clic en los ... y se nos abrirá el editor de código, hay ponemos:

if len (me.mi_control) = 2 then me.control1 = me.Mi_control
if len (me.mi_control) = 4 then me.control2 = me.Mi_control
if len (me.mi_control) = 6 then me.control3 = me.Mi_control

También se puede hacer con un Select case, pero creo que así es más ilustrativo.

De todas formas, pasate por EL FORO, dónde precisamente se está desarrollando un monográfico sobre el tratamiento de textos y algunos otros ejemplos.

hola en efecto me funciona pero se me olvido comentar que estoy usando un teclado numérico virtual y cuando tecleo desde el no me funciona si lo hago desde el teclado físico si!!!! pero me gustaría saber si puedo solucionar esto

Pues explicame un poco más que es eso del teclado virtual. Lo que yo te expuse cuenta los caracteres existentes en el campo en cuestión por lo que debería dar igual por que medio se han introducido. Comentame también el problema que te da.

hola simplemente cuando lo dígito desde el teclado del pc entran los datos pero cuando lo hago desde el teclado que cree en el formulario simplemente no se guarda pero no da error si es posible me gustaría mandarte el proyecto para que lo puedas ver si posible mi correo es [email protected]

Eso entiendo que ocurre porque cuando utilizas el teclado virtual, no se dispara el evento "después de actualizar", prueba poniendo el código en otro evento, por ejemplo "al perder el foco", que supongo que lo perderá, salvo que sea el único campo del formulario.

Si aún así quieres mandarme el proyecto, entra en EL FORO, y desde allí podemos interactuar más.

hola como estas ya lo probé en vario tipos de eventos y signe igual

este es un na muestra de como estoy asiendo el teclado virtual quizá hay es que esta el problema por que si funciona con el teclado físico normal es evidente que el problema esta en la manera como se esta procediendo el evento

Private Sub ctr7_Click()
If Len(campo1) = 6 Then Exit Sub
campo1 = campo1 & 7
End Sub


Private Sub ctr8_Click()
If Len(campo1) = 6 Then Exit Sub
campo1 = campo1 & 8
End Sub


Private Sub ctr9_Click()
If Len(campo1) = 6 Then Exit Sub
campo1 = campo1 & 9
End Sub


Private Sub ctr4_Click()
If Len(campo1) = 6 Then Exit Sub
campo1 = campo1 & 4
End Sub

Y después de acabar de introducir los datos con el teclado virtual ¿Qué haces? ¿Pasas el foco a otro control?, porque entonces el evento más lógico sería "Al perder el foco", también puedes probar asignándolo a una tecla, o poniendo un botón "FIN" en el teclado virtual y asignárselo a ese botón.

Otra solución pasa por convertir el código que te comente a una función. Escribes en el editor de VBA:

Private sub actualiza()
if len (me.mi_control) = 2 then me.control1 = me.Mi_control
if len (me.mi_control) = 4 then me.control2 = me.Mi_control
if len (me.mi_control) = 6 then me.control3 = me.Mi_control
End Sub

Luego ya solo tienes que añadirlo a cada una de las teclas del teclado:

Private Sub ctr7_Click()
If Len(campo1) = 6 Then Exit Sub
campo1 = campo1 & 7

actualiza
End Sub

Me acabo de dar cuenta que si utilizas la solución propuesta de pasarlo a función la deberías cambiar, ya que si no en una cadena de 6 caracteres, te escribiría datos en los 3 controles. Cambialo por algo como:

Select case len (me.mi_control)
Case 2
me.micontrol1 = me.micontrol
me.micontrol2 = ""
me.micontrol3 = ""
Case 4
me.micontrol1 = ""
me.micontrol2 = me.micontrol
me.micontrol3 = ""
Case 6
me.micontrol1 = ""
me.micontrol2 = ""
me.micontrol3 = me.micontrol
end select

hola como estas

mis respeto asia usted si de la manera que usted me a pandado el nuevo código funciona

pero quiero poder seguir definiendo que solo el cuadro de texto por obligación solo permita entrar valores numéricos de 2, 4 o 6 labores y no se como hacerlo

he probado probado de esta forma ........ If Len(micontrol) = 6 Then Exit Sub

y este solo me controla que solo admita valores que no pasen de 6

Private Sub mibotom_Click()
If Len(micontrol) = 6 Then Exit Sub
micontrol = micontrol & 7
Select Case Len(Me.campo1)

Select case len (me.micontrol)
Case 2
me.micontrol1 = me.micontrol
me.micontrol2 = ""
me.micontrol3 = ""
Case 4
me.micontrol1 = ""
me.micontrol2 = me.micontrol
me.micontrol3 = ""
Case 6
me.micontrol1 = ""
me.micontrol2 = ""
me.micontrol3 = me.micontrol
end select

End Sub

disculpe ya que cada veo un avance en mi pregunta esta se extiende un poco, mas es que cuando hice la pregunta no encontré la forma de hacer todas las preguntas referente a lo que quiero lograr hacer en total

y de la forma que lo estoy asiendo claramente veo los paso y trato de analizar por mi mismo la lección y luego tratar de entender la lógica nuevamente gracias y

mas gracias por la paciencia

me gustaría saber si puedo seguir formulando preguntas relacionada al tema por este mismo o si al lograr solucionar la respuesta formule una nueva?

Primero, creo que no has aplicado todo lo que te he comentado. Por otra parte si crees que tu pregunta inicial esta solucionada, lo correcto sería cerrar este hilo.

Y si quieres, entra en Access Fácil, y allí te doy una contestación más amplia y detallada a los problemas que tengas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas