Como programar un mismo evento de varios Controles de un Formulario

La pregunta se refiere a que quiero que algunos campos (no todos) de mi formulario sean obligatorios, y que si no son llenados salga un MsgBox "debe completar el campo xxx" manteniendo el foco en ese campo.

Pero que sea en un solo evento y no el mismo evento repetido en cada uno de esos campos.

1 Respuesta

Respuesta
1

Tabaré: Independientemente de programar un Evento para Varios controles, creo que éste tema de inicio tiene una solución más simple.

En la Tabla le pones a cada campo el requerido en "SI", y en la propiedad del Formulario .

Propiedades >> Otras >> Ciclo >> Registro Actual

No vas a poder salir ni moverte hasta que no los rellenes.

'Añado al evento OnClick a todos los controles TBox
For Each Ctrl In Me.Controls
        If Ctrl.ControlType = acTextBox And Left(Ctrl.Name, 4) = "TBox" Then
                Ctrl.OnClick = "=AbreAsigna('" & Ctrl.Name & "')"                 
        End If
Next Ctrl

Aquí lo que he hecho es añadir el Evento Click a "Todos" los Controles que comiencen por TBox

Luego en la Función : AbreAsigna .. le pondremos las acciones que necesitemos.

Mis saludos >> Jacinto

Gracias por responder.  

El tema de poner en "requerido a si" lo había sacado cuando se hizo el aviso que los cuatro primeros campos informaban que ese expediente ya había sido ingresado (cadena TextoExpte) y saltaba al formulario Buscar Expediente (por ahí no te acordás, que sería lo más lógico). Por eso, para no armar lío prefiero usar la segunda opción.

El otro día logré filtrar fechas que escribo en un formulario con dos TextBox y me trae los expedientes que ingresaron entre esas dos fechas que ingresé. Para vos sé que es y una pavada pero para mi fue complicado.

Un abrazo

Hola Jacinto, como te había dicho, el poner los campos "requeridos" produce error en el evento lost_focus del formulario. Ahí está la CadenaExpediente que informa que ese Expediente ya está ingresado.

Ahora, por el otro lado, coloqué el evento en "Al hacer Click" del Formulario para que chequeé los que comienzan por TBox, pero lo que no me doy cuenta es qué hacer con lo que te referís "AbreAsigna .. le pondremos las acciones que necesitemos"

Saludos

Tabaré: Eso era un ejemplo de como programar el mismo evento en varios controles.

Si te da error en un Campo requerido que tiene un valor, algo no funciona bien.

A veces un código aislado y sin el conocimiento del entorno, hace que las cosas no funcionen y en la medida que vas añadiendo aún se complica más el tema.

Me temo que en éste caso ocurre algo así. Si te parece pones aquí un enlace solo con los Objetos de tu BD implicados en todo ese proceso y "Cambias" algunos datos reales por inventados y será menos costoso el ayudarte.

Si por alguna razón personal no quieres poner un enlace público, me lo envías a [email protected] y miro de ayudarte. Ya me contarás. Mis saludos >> Jacinto

Hola Jacinto, me debo haber expresado mal.

El error me lo da si pongo requerido a SI en los campos en "diseño de tabla". Pero de esta manera no lo hago.

Como vos me indicaste en la segunda opción,  en este procedimiento es que no me funciona. 

For Each Ctrl In Me.Controls
        If Ctrl.ControlType = acTextBox And Left(Ctrl.Name, 4) = "TBox" Then
                Ctrl.OnClick = "=AbreAsigna('" & Ctrl.Name & "')"                 
        End If
Next Ctrl

Este procedimiento lo pongo en "Al hacer click" del formulario pero no entiendo lo de "Abre asigna". Que acción debe suceder. Me indica que para cada control que comience con TBox al hacer click... y ahí si le coloco un MsgBox no lo toma, si coloco ir al foco tampoco. Es ahí donde me trabo. 


                    

Tabaré: Tal como te indicaba ese Ejemplo es solo eso: Un Ejemplo.

1.- El Evento programado no pertenece al Formulario, sino a cada uno de los TextBox que comiencen su nombre por "TBox"

2.- No te hará nada porque habría que escribir una Función que se llamara

Public Function AbreAsigna(StrControl As String)

'Aquí todas las acciones que quieras que se produzcan

End Function

3.- Sigo pensando que si pones en una Tabla >> Campo requerido >> Si, y ese Campo tiene un valor en el correspondiente "Control" del Formulario, te de error al perder el Foco

La oferta de ayuda si pones los Objetos necesarios o me envías laBD en las condiciones que te citaba, sigue en pié. Entre otras cosas es para poder probar el código con tus nombres de Objetos.

Si tienes alguna razón para no hacerlo, me lo comentas y cuando tenga un hueco miro de prepararte un Ejemplo que luego tu debes trasladar a yu BD, adaptando los nombres.

Me comentas por favor . Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas