Actualizar Campo por Indice de Tabulación |
Responder |
Autor | |
Ignigo
Nuevo Unido: 09/Septiembre/2019 Localización: España Estado: Sin conexión Puntos: 17 |
Tema: Actualizar Campo por Indice de Tabulación Enviado: 09/Septiembre/2019 a las 22:59 |
Hola a todos
Necesito la ayuda de alguien para el próximo tema. Necesito una función general que serviría para establecer el valor Now () en un campo. La peculiaridad es que debe hacerse por el índice de tabulación. El formulario es un formulario de registro de controles de calidad, y justo al lado del control se encuentra el campo "hora de control" con un índice de tabulación correlativo al del control. Lo que necesito es una función que se activa cuando se inserta un valor en el control, que identifica el índice de tabulación del control y que establece el valor Now () del campo "hora de control" mediante el índice de tabulación + 1. Sé que esto se puede hacer por macro, pero me gustaría mejorar el programa, ya que por macro tengo que hacer uno para cada control, y hay hay muchos. En resumen: 1) Después de actualiza un cotrol, la función identifica el índice de tabulación del control 2) Obtiene el "Control de horas" con el tabindex+1. 3) Actualiza el control de horas con 'Now'. No sé si te lo expliqué bien. Gracias de antemano. |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 10/Septiembre/2019 a las 12:02 |
Hola Ignigo y bienvenido al foro,
Uno de los "problemas" de Access es que no es posible acceder a un control *directamente* a través de la propiedad TabIndex. La manera de hacerlo es recorriendo la colección de controles de la sección. Yo lo enfocaría con una función parecida a esta:
Esa función la asignas a los controles "lanzadores" en el evento AfterUpdate y listo. Escrito al vuelo. Los experimentos con gaseosa. Un saludo |
|
Ignigo
Nuevo Unido: 09/Septiembre/2019 Localización: España Estado: Sin conexión Puntos: 17 |
Enviado: 11/Septiembre/2019 a las 23:51 |
Gracias Xavi:
Me da un error. El uso de la palabra clave Me no es valido. ¿Puedes solucionarlo? |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 12/Septiembre/2019 a las 09:41 |
Se supone que la función está en el módulo asociado al formulario.
De no ser así y quererla genérica por utilizarla en otros formularios dónde se seguirá la misma regla de tabulación, cambia el Me por una referencia al formulario activo: Screen.ActiveForm |
|
Ignigo
Nuevo Unido: 09/Septiembre/2019 Localización: España Estado: Sin conexión Puntos: 17 |
Enviado: 12/Septiembre/2019 a las 22:34 |
Hola Xavi;
Si necesito hacerla genérica. Otro error. Esta vez: "Error definido por la aplicación u objeto" en la línea "If ctl.TabIndex = frmCurrentForm.TabIndex + 1 Then" El código que he escrito es: "Function TimestampTabIndexMasUno() Dim ctl As Control Dim frmCurrentForm As Form Set frmCurrentForm = Screen.ActiveForm For Each ctl In frmCurrentForm.Section(Screen.ActiveControl.Section).Controls If ctl.TabIndex = frmCurrentForm.TabIndex + 1 Then ctl = Now Exit Function End If Next End Function" ¿Que puede fallar? La función la he colocado en la propiedas "al cambiar". |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 12/Septiembre/2019 a las 22:52 |
Yo solo he sugerido que debias cambiar "Me" por "Screen.ActiveForm". No entiendo los otros cambios que has hecho.
En rojo el único cambio necesario.
|
|
Ignigo
Nuevo Unido: 09/Septiembre/2019 Localización: España Estado: Sin conexión Puntos: 17 |
Enviado: 13/Septiembre/2019 a las 21:51 |
Hola Xavi;
Si, ya lo probé y me daba el error: "El objeto no admite esta propiedad o método" Se me marcaba: "If ctl.TabIndex = Screen.ActiveControl.TabIndex + 1 Then" Saludos, |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14720 |
Enviado: 14/Septiembre/2019 a las 10:19 |
Vale. El problema viene dado porque no todos los controles disponen de la propiedad TabIndex. Al recorrer la colección de controles, alguno de ellos no tiene esa propiedad (una imagen, una linea, un cuadro, etc)
Modificación del código para que evalúe ciertos tipos de control:
Nota: puede faltar algún tipo. |
|
Ignigo
Nuevo Unido: 09/Septiembre/2019 Localización: España Estado: Sin conexión Puntos: 17 |
Enviado: 18/Septiembre/2019 a las 22:47 |
Hola Xavi;
Si, funciona. Con esta función genérica, se me simplifica mucho el programa. Muchísimas gracias |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |