** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Formato Condicional
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFormato Condicional

 Responder Responder
Autor
Mensaje
M3talzoneDGD Ver desplegable
Nuevo
Nuevo


Unido: 12/Febrero/2024
Localización: almeria
Estado: Sin conexión
Puntos: 46
Enlace directo a este mensaje Tema: Formato Condicional
    Enviado: 13/Febrero/2024 a las 13:09
Buenas, de nuevo otra duda, se que puedo ser un poco pesado pero es que no veo como hacerlo.

En un formulario continua con los campos FECHA, NºPEDIDO,PROVEDOR,ESTADO hay forma de que toda la fila se ponda de un color X dependiendo del valor que tenga el campo ESTADO. Ejemplo, si ESTADO=PEDIDO que la fila entera tenga de color de fondo rojo y el texto en blanco, y si ESTADO = RECIBIDO, que la fila entera tenga de color de fondo verde y el texto en negro. En un campo o control si que he podido hacerlo a través del formato condicional, pero lo que quiero, si es posible, que toda la fila esté con el color del formato condicional.

No se si me he explicado bien.

Muchas gracias de antemano.


Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 13/Febrero/2024 a las 13:20
Hola,

Hay diferentes formas de hacerlo:
a. aplicar la misma "expresión" a todos los controles. 
b. colocar un control en el fondo independiente con ese formato condicional y todos los controles por encima transparentes. 

Si optas por la segunda opción , y viendo la combinación de colores que pides, deberás combinar ambas técnicas ya que el fondo lo marcará la técnica B mientras que el texto lo marcará la técnica A.

A mi entender es más laborioso que complicado.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
M3talzoneDGD Ver desplegable
Nuevo
Nuevo


Unido: 12/Febrero/2024
Localización: almeria
Estado: Sin conexión
Puntos: 46
Enlace directo a este mensaje Enviado: 13/Febrero/2024 a las 14:09
Perdona mi torpeza, pero como le digo por ejemplo al control fecha que si el control estado = "PEDIDO" me ponga el fondo en tal color?
Que es por código VBA o a través del asistente que tiene? porque si es a través del asistente no se como hacerlo.

muchas gracias.

Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Enlace directo a este mensaje Enviado: 13/Febrero/2024 a las 14:26
Si nos referimos solo a poner los fondos de un color u otro, la técnica propuesta es:

- Pasar la propiedad Estilo de fondo a transparente. No todos los controles tienen esa propiedad pero los TextBox y ComboBox si
- Añadir un TextBox que podemos llamar fondo. Será independiente, con estilo de fondo normal y colocado al fono (botón derecho, ubicación, enviar al fondo
- A ese TextBox le daremos un formato condicional (botón derecho, formato condicional, nueva regla). En la siguiente pantalla dejamos la selección de la parte superior como "Compruebe los datos en el registro actual o use una expresión" y el la parte de abajo despliegas y escoges "La expresión es". En el cuadro escribes la expresión:
[Estado] ="PEDIDO"
Entre corchetes va el nombre del control
Define el formato. En tu caso el color de fondo
A probar

Si deseas cambiar el color del texto deberás hacer algo parecido pero no sobre este control si no sobre cada uno de los textbox/combobox del detalle.

Un saludo
PD: hacerlo por VBA es una "matada" que sólo he hecho una vez

Xavi, un minyó de Terrassa

Mi web
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Enlace directo a este mensaje Enviado: 13/Febrero/2024 a las 15:23
algo así: 

Function RT_CamposFormato(Frm As Form, ByVal ArrayCampos As String = "", ByVal FocusBackColor As Long)    
    
    Dim i As Integer, V As Variant, Ctl As Control
    V = ArrayCampos

    For i = 0 To UBound(V)
        Set Ctl = Frm.Controls(V(i))
            Ctl.FormatConditions.Add acFieldHasFocus
            Ctl.FormatConditions(0).BackColor = FocusBackColor
    Next i
End Function

Es un recorte de una función con más cosas, así que ojo hay que pulirla, también se podría pasar como lista de campos.

Lo bueno del condicional GotFocus es que si ya existe lo machaca ... así que no hay que preocuparse por borrarlo primero.


Editado por Mihura - 13/Febrero/2024 a las 15:43
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
M3talzoneDGD Ver desplegable
Nuevo
Nuevo


Unido: 12/Febrero/2024
Localización: almeria
Estado: Sin conexión
Puntos: 46
Enlace directo a este mensaje Enviado: 13/Febrero/2024 a las 16:49
Conseguido, muchas gracias a todos y perdón por las molestias.
Cerrar el hilo

Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable