Discussione:
Formattazione Condizionale senza VBA
(troppo vecchio per rispondere)
Marco
2018-04-03 18:58:12 UTC
Permalink
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
Marco
2018-04-04 09:25:27 UTC
Permalink
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
Marco
2018-04-04 10:08:05 UTC
Permalink
Post by Marco
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
Marco
2018-04-04 10:12:17 UTC
Permalink
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....
stef@no
2018-04-05 07:29:30 UTC
Permalink
Post by Marco
Ho dovuto ricostruire la Maschera ExNovo.
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
@Alex
2018-04-05 10:25:45 UTC
Permalink
Post by ***@no
Post by Marco
Ho dovuto ricostruire la Maschera ExNovo.
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
stef@no
2018-04-06 07:13:26 UTC
Permalink
Post by @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
stef@no
2018-04-10 13:28:10 UTC
Permalink
Post by @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.
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
@Alex
2018-04-10 16:58:00 UTC
Permalink
Post by ***@no
Post by @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.
-----
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
stef@no
2018-04-11 10:35:53 UTC
Permalink
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...?
Non mi pare di aver specificato (non so quanto fosse importante) che si
tratta di un sottoreport; in quanto al contenuto di [cExpiry] è una
semplice data
Detto questo vuoi vedere in GIALLO le scadenze tra 30GG ed in Rosso quelle scadute...?
Esatto
Prova così, ma fai attenzione di usare l'ANTEPRIMA DI STAMPA, non il LAYOUT.
si, questo mi è noto :-)
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
Non funziona. :-(
Posto che il tuo [Arrivo] sia il mio controllo [cExpiry] e se interpreto
bene:
1) fai una differenza tra due date e la piazzi nella variabile iDiffDay;
2) lo sfondo di [Arrivo] cambia in base a iDiffDay.

Tuttavia Access mi dice sempre, nella definizione di iDiffDay, che
[Arrivo] è nullo.
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
@Alex
2018-04-11 10:57:05 UTC
Permalink
Post by ***@no
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...?
Non mi pare di aver specificato (non so quanto fosse importante) che si
tratta di un sottoreport; in quanto al contenuto di [cExpiry] è una
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
stef@no
2018-04-12 08:15:11 UTC
Permalink
Post by @Alex
Mah... credo tu commetta qualche errore banale.
Possibilissimo. Capire quale, però...
Post by @Alex
Il codice suggerito è corretto e funzionante, è stato provato
in un REPORT ed anche nel SottoReport...!
non metto in dubbio, soprattutto se viene da te.
Post by @Alex
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
stef@no
2018-04-05 07:13:47 UTC
Permalink
Post by Marco
Salve a tutti.
MyData - è Maggiore di- Date() - Sfondo Campo Rosso
Funziona, le date maggiori di oggi hanno uno sfondo rosso.
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.
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
Continua a leggere su narkive:
Loading...