Formato nro de decimales en varios textBox dependiendo del valor de otro textbox.

Estoy intentando dar formato número con decimales cero (0) o cuatro (4) a unos textBox en un formulario continuo con estos nombres:

TxtTitCom, txtPrecioUnitario, txtGananPerd, txtTitDispon

txtCategoria.... Con origen de datos =[Variables temporales]![Categ].

Tengo otros textbox pero los que se tienen que modificar son los anteriormente citados.

Se debe modificar el formato decimales dependiendo del valor que tenga el textbox txtCategoria. Por ejemplo si son acciones los campos deben aparecer sin decimales por el contrario si el valor del textbox txtCategoría es FondInversiion, entonces deben aparecer con cuatro decimales.

¿Cómo lo puedo lograr?.

1 respuesta

Respuesta
1

He tomado tu respuesta de la IA, me parece muy acertada.

Lograr esto en un Formulario Continuo de Access tiene un grado de dificultad particular: si cambias la propiedad .DecimalPlaces o .Format mediante VBA, Access aplicará el cambio a todos los registros visibles al mismo tiempo, no fila por fila.

Para que cada fila mantenga su propio formato visual independiente, tienes dos caminos principales:


Opción 1: Formato Condicional (La más estable)

Esta es la solución ideal para formularios continuos porque Access gestiona el formato de cada instancia del control de forma individual.

  1. Abre el formulario en Vista Diseño.

  2. Selecciona los cuadros de texto que quieres afectar (txtPrecioUnitario, txtGananPerd, etc.).

  3. Ve a la pestaña Formato > Formato condicional.

  4. Crea una Nueva regla:

    • Tipo de regla: Seleccione "Expresión".

    • Expresión: [txtCategoria]="acciones"

    • Formato: Aquí viene el truco. No puedes cambiar la propiedad de decimales directamente, pero puedes aplicar un Formato de Número específico (como negrita o color) y, lo más importante, usar la siguiente opción si solo necesitas diferenciar visualmente.

Nota Crítica: El Formato Condicional estándar de Access no permite cambiar la máscara de entrada o los decimales dinámicamente. Si necesitas precisión visual estricta (0 vs 4), pasamos a la Opción 2.


Opción 2: Formateo mediante el Origen del Control (Cadenas de texto)

Para que un formulario continuo muestre 0 decimales en una fila y 4 en otra, la forma más efectiva es transformar el valor en una cadena de texto formateada directamente en el origen de datos.

Cambia el Origen del Control (Control Source) de tus cuadros de texto de la siguiente manera:

Para txtPrecioUnitario:

=IIf([txtCategoria]="acciones"; Formato([NombreDelCampoOriginal]; "Standard"); Formato([NombreDelCampoOriginal]; "#,##0.0000"))

Sustituye [NombreDelCampoOriginal] por el nombre real del campo en tu tabla/consulta.

Pros:

  • Cada fila se ve exactamente como quieres.

  • Funciona perfectamente en formularios continuos.

Contras:

  • El campo se convierte técnicamente en "texto" a la vista. Si intentas editarlo manualmente, podrías tener problemas de conversión de tipos. Es ideal para campos de solo lectura.


Opción 3: VBA (Solo si el enfoque es el Registro Actual)

Si necesitas que el usuario pueda editar los datos y quieres que el formato cambie al entrar en el registro, usa el evento Al activar (On Current) del formulario:

Private Sub Form_Current()
    Dim strFormato As String
    If Me.txtCategoria = "acciones" Then
        strFormato = "Fixed"
        Me.txtPrecioUnitario.DecimalPlaces = 0
        Me.txtGananPerd.DecimalPlaces = 0
    ElseIf Me.txtCategoria = "FondInversiion" Then
        strFormato = "Standard"
        Me.txtPrecioUnitario.DecimalPlaces = 4
        Me.txtGananPerd.DecimalPlaces = 4
    End If
End Sub

Advertencia en Formularios Continuos: Al usar este código, notarás que al hacer clic en una fila de "Acciones", todas las filas del formulario cambiarán visualmente a 0 decimales. Al hacer clic en una de "Fondos", todas cambiarán a 4. Solo el registro activo tendrá el formato "correcto" según su categoría.


Resumen de Recomendación

  • Si los campos son para visualización/informes: Usa la Opción 2 (Función Formato en el origen del control). Es la única que permite ver decimales mixtos en la misma pantalla.

  • Si los campos son para edición de datos: Usa la Opción 3, aceptando que el formato visual de las filas inactivas parpadeará o cambiará según donde esté el cursor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas