Newsgroup: it.comp.appl.access
Titolo: Formattazione Condizionale senza VBA

Salve a tutti. 
Ho una form a visualizzazione Maschere Continue nella quale ho impostato il campo MyData con la seguente condizione :
MyData    - è Maggiore di-    Date()   - Sfondo Campo Rosso
 
Funziona, le date maggiori di oggi hanno uno sfondo rosso.
Ma ho due domande:
1) non capisco perché in una altra Form. Identiche condizioni, non funziona!!!!
Un pomeriggio che impazzisco. (Solo su record corrente e sul setfocus, lo sfondo si fa rosso, per il resto ignora la formattazione. 
2) Access accetta per esempio l'espressione Date()+7 nella formattazione condizionale?
Sarà perché per oggi sono fuso ma ancora non l'ho capito. Pare non funzionare.
Grazie per le risposte 
 
 

Seguendo le indicazioni di una guida ho anche modificato il nome del Controllo nella Form rispetto al nome della Tabella sottostante... quindi nel caso specifico il nome del campo Mydata (Tabella), è diventato txtMydata nel controllo della Form...
Niente da fare. Non funziona: diventa rosso solo con il mouse puntato sul controllo.
Uso Win8 con Access 2010  
 

Ok RISOLTO: 
Ho dovuto ricostruire la Maschera ExNovo. 
Con la Maschera nuova funziona tutto, anche Date()+7 etc...
 
Chissà perché quella...non voleva saperne di funzionare.
Probabilmente nella conversione da Access 2003 a 2010....


Personalmente uso Now() e Now()+x al posto di Date() e funziona. Anche 
con condizioni multiple.
Tuttavia ho lo stesso problema sul report: la stessa impostazione non 
funziona solo in parte, vale a dire che la data scaduta ha il fondo 
rosso ma la data in scadenza non mantiene il fondo giallo (viceversa la 
maschera ubbidisce).
 
ciao
-- 
Stefano
 

 Con la Maschera nuova funziona tutto, anche Date()+7 etc...
Uhm... stando così le cose dovrei farlo anch'io con il mio report. 
Evidentemente, nel copiandolo da una funzione all'altra devo aver 
infilato qualcosa che dà fastidio.
Grazie
 
 
ciao
-- 
Stefano
 


Stefano nei REPORT la F.C. ha veramente pochissimo senso... prova a valutare di scrivere 1 riga di codice su EVENTO FORMAT della sezione che ospita il controllo... ed in quello condizioni la sua GRAFICA.
 
@Alex

 Stefano nei REPORT la F.C. ha veramente pochissimo senso... prova a valutare di scrivere 1 riga di codice su EVENTO FORMAT della sezione che ospita il controllo... ed in quello condizioni la sua GRAFICA.
Ricevuto.
Credo di avere qualche minuto in mattinata per eseguire il tuo 
suggerimento, che è prezioso.
 
Grazie infinite
-- 
Stefano
 

 Stefano nei REPORT la F.C. ha veramente pochissimo senso... prova a valutare di scrivere 1 riga di codice su EVENTO FORMAT della sezione che ospita il controllo... ed in quello condizioni la sua GRAFICA.
 
Non capisco dove sbaglio:
 
-----
Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
     If Me.Expiry < Now() Then
        Me.cExpiry.BackColor = vbRed
     ElseIf Me.Expiry < Now() + 30 Then
          Me.cExpiry.BackColor = RGB(255, 194, 14)
     End If
End Sub
-----
 
risultato: gli sfondi di tutti controlli sono rossi. Lo sfondo giallo 
non viene visualizzato mai.
 
grazie in anticipo
-- 
Stefano


Prima cosa definisci il contenuto del Controllo [cExpiry], immagino contenga Ora ma con che risoluzione...? (contiene solo gg/mm/aaaa oppure la popoli usando Now() quindi ha anche hh:mm:ss...?
 
Detto questo vuoi vedere in GIALLO le scadenze tra 30GG ed in Rosso quelle scadute...?
 
Prova così, ma fai attenzione di usare l'ANTEPRIMA DI STAMPA, non il LAYOUT.
 
Option Compare Database
Option Explicit
 
Private Sub Corpo_Format(Cancel As Integer, FormatCount As Integer)
    Dim iDiffDay   As Integer
    'iDiffDay = DateDiff("d", Now(), Me.Arrivo)      ' Se ti serve [hh:mm:ss]
    iDiffDay = DateDiff("d", Date(), Fix(Me.Arrivo)) ' Se NON ti serve [hh:mm:ss]
    Debug.Print iDiffDay
    Select Case iDiffDay
        Case Is < 0:     Me.Arrivo.BackColor = vbRed      ' SCADUTA
        Case is =0:      Me.Arrivo.BackColor=vblue        ' SCADE OGGI
        Case Is <= 30:   Me.Arrivo.BackColor = vbYellow   ' SCADE TRA 29GG
        Case Is <= 60:   Me.Arrivo.BackColor = vbGreen    ' SCADE TRA 59GG
        Case Else:       Me.Arrivo.BackColor = Rgb(255,255,255)     ' QUALSIASI DATA >60GG
    End Select
End Sub
 
L'ultimo devi mettere il Colore del BackColor normale...
 
@Alex

 L'ultimo devi mettere il Colore del BackColor normale...Capisco. Che vorrei associare all'opzione in cui il valore sia assente 
(is Null)
 
grazie ancora
-- 
Stefano
 

 semplice data
....
 
Mah... credo tu commetta qualche errore banale.
 
Il codice suggerito è corretto e funzionante, è stato provato in un REPORT ed anche nel SottoReport...!
Se i Controlli condizionanti sono nella medesima sezione non hai problemi... se i controlli condizionanti sono in Posizioni differenti... mi verrebbe da dire che ti manca qualche concetto aggiuntivo per capire e farci capire.
 
@Alex 

Il 11/04/2018 12:57, @Alex ha scritto:
 
 > Mah... credo tu commetta qualche errore banale.
Possibilissimo. Capire quale, però...
 
 > Il codice suggerito è corretto e funzionante, è stato provato
 > in un REPORT ed anche nel SottoReport...!
non metto in dubbio, soprattutto se viene da te.
 
 > Se i Controlli condizionanti sono nella medesima sezione non
 > hai problemi... se i controlli condizionanti
 > sono in Posizioni differenti... mi verrebbe da dire che ti manca
 > qualche concetto aggiuntivo per capire e farci capire.
si, un solo controllo, nella stessa sezione. Ma forse il problema è lì: 
ciò che condiziona è il contenuto del controllo, l'oggetto condizionato 
è lo stesso controllo. Dovrei differenziarli? Dal tuo codice mi pareva 
di capire di no.
Farò qualche altra prova per capire.
Grazie comunque.
 
ciao
-- 
Stefano