ACCESS 2010

di
Anonimizzato11394
il
1 risposte

ACCESS 2010

Buonasera a tutti

mi presento sono dario e sono nuovo di questo forum.

Come riportato nel titolo ho un problema con un report di access per quanto concerne la formattazione condizionale mi spiego meglio:

in un report ho 4 caselle A B C D in cui i campi B C D hanno una formattazione condizionale su 4 livelli per ogni campo come segue:

Campo B:
-B>NOW()+15 colore verde
-Now()+8<B<Now()+14 colore giallo
-Now()<B<Now()+7 colore rosso
-B<Now() colore nero

Campo C:
-C>X+30 colore verde
-X+15<C<X+29 colore giallo
-X<C<X+14 colore rosso
-C<X colore nero


Campo D: formattato come campo C

Il significato dei colori è il seguente:

-nero: oltre la scadenza (valore più restrittivo)


-verde: scadenza lontana (valore meno restrittivo)


Ora vorrei che formattare il campo A in maniera tale che al verificarsi della condizione più restrittiva di uno dei campi B,C,D anche il campo A abbia il medesimo colore come segue
Se
-B verde
-C giallo
-D rosso allora A diventa rosso

Spero di essermi spiegato in maniera esaustiva.
Purtroppo la mia conoscenza di access (e del 2010 in particolare) non è così approfondita.

Spero che qualcuno di voi riesca a darmi una mano

Ringraziandovi per il supporto

dario

1 Risposte

  • Re: ACCESS 2010

    Ciao Dario,
    ti espongo il mio personale parere... sull'uso della formattazione condizionale nei REPORT.

    NON LA USEREI

    La battuta è d'obbligo, ma il senso tecnico è reale...
    I controlli nei Report se inseriti nella SEZIONE vengono disegnati per ogni RECORD, pertanto viene generato l'EVENTO FORMAT della sezione in cui sono inseriti ad OGNI Record.
    L'evento in questione si genera dopo l'assegnazione dei valori e prima della Formattazione grafica.
    E' una sorta di intercettazione del comando WM_PAINT di Windows...(banalizzando)
    Ne consegue che con pochissimo codice inserito direttamente nell'evento, puoi definire graficamente tutto relativamente ai controlli, ed avere una serie di CRITERI completa.
    Es:
    
    Option Compare Database
    Option Explicit
    
    Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
    
        If Me!NomeTxtValore.Value<1000 then
            Me!NomeTextValore.BackColor=vbRed
    
        ElseIf Me!NomeTxtValore.Value<2000 then
            Me!NomeTextValore.BackColor=vbBlue
    
        ElseIf Me!NomeTxtValore.Value<3000 then
            Me!NomeTextValore.BackColor=vbYellow
    
        End if
    End Sub
    La sequenza degli IF è studiata con i valori... la prima che si verifica si esce dal Check, quindi si semplificano i test dei valori INTERMEDI...

    In questo modo puoi avere N condizioni e soprattutto condizionare X controlli in modo aggregato.
Devi accedere o registrarti per scrivere nel forum
1 risposte