Como hacer que un textBox devuelva un valor aplicando una condición?

Los Expertos.
Mi problema es el siguiente, tengo una Bd en Accesos 2019 en la que hay varios Form, Tablas e Informes relacionados. En uno de los Informes tengo un textBox (llamado txtMateriales) que toma los datos de un Form, y otro textBox (llamado txtMargen) que debe devolver un valor en función de lo que hay en txtMateriales. La lógica que quiero aplicar es la siguiente; si txtMateriales <= 3999$ entonces txtMargen = 500$ si no txtMargen = 1000$.
Intenté hacerlo creando un módulo VBA con una Función Pública, la cual llamo desde el Origen de Control en las propiedades de txtMargen. Pero no hace lo que quiero, me devuelve siempre 500$ o siempre 1000$ independientemente de lo que hay en txtMateriales. Estoy seguro que es un problema en la forma de escribir el código.
Por favor alguien me puede decir como escribir correctamente un código para hacer eso, o si hay alguna otra forma de hacerlo.

Respuesta
1

¿No ha pensado en hacer la validación en la consulta origen del informe e incluir acá el campo?. Sería algo como:

Margen:IIF([tmateriales]<=3999;500;1000)

En donde tmateriales es un campo. Trate en lo posible de no ejecutar código en los informes, de esta manera se abren mucho más rápido.

Bueno es solo una idea y recomendación

¡Gracias! 
Eduardo Pérez Fernández, pero es un informe que no toma los datos de ninguna tabla, ni consulta sino de dos Hojas de Datos y un Form. Por ahora ya resolví con la idea de Julián González Cabarcos,

1 respuesta más de otro experto

Respuesta
1

Personalmente, para una cosa tan simple no crearía un módulo pero...

Si tengo el informe

Como no sé en que sección del informe están los cuadros de texto los he puesto en el encabezado de página. Cuando lo abro

Cuando es

Al abrirlo

El código se lo pongo en las propiedades de la sección en la que están los controles, en este caso es

Private Sub SecciónEncabezadoDePágina_Format(Cancel As Integer, FormatCount As Integer)
If TxtMateriales <= 3999 Then
TxtMargen = 500
Else
TxtMargen = 1000
End If
End Sub

Si quieres seguir manteniendo el módulo ponlo en la sección correspondiente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas