Newsgroup: it.comp.appl.access
Titolo: Alert scadenza

Salve a tutti,
espongo il mio quesito
 
ho una tabella chiamata "tb_manutenzioni"
con i campi:
 
"ID" | "TipoManut" | "Scadenza"
 
 
poi ho una maschera "fr_manutenzioni" la cui origine dei dati è "tb_manutenzioni"
 
sulla maschera oltre ai campi :
 
"ID" | "TipoManut" | "Scadenza" ho inserito una casella di 
 
testo quadrata alert.txt che se il campo "Scadenza" > della data odierna deve 
 
diventare rosso altrimenti rimane bianco.
 
ho provato cosi su apertura maschera:
 
#######################################################
Private Sub Form_Open(Cancel As Integer)
   Dim cont as integer
   cont = DCount("[id]", "tb_scadenze")
 
    For i = 1 To cont
 
    If (Me.scadenza) >= (Me.Now()) Then
Me.alert.BackColor = vbWhite
    Else
Me.alert.BackColor = vbRed
    End If
 
    Next i
 
End Sub
#####################################################
 
ma non funziona, infatti o mi colora tutte le righe bianche o tutte rosse a seconda della condizione
 
Mi date una mano?

Quel codice non ha senso a prescindere... ma se sei in Maschera Continua, e vuoi evidenziare graficamente un campo con un Criterio(nel tuo caso DataScadenza>Date() allora devi obbligatoriamente farlo fare alla Formattazione condizionale.
 
L'uso del DCount iniziale su Open non è una buona idea nemmeno se vuoi un Conteggio, perchè nel caso vengano applicati FILTRI non avrebbero effetto, e come dovresti sapere la funzione OPENFORM potrebbe avere una WHERECOND che applicata alla proprietà FILTER modificherebbe il Recordset di origine...
 
@Alex


https://support.office.com/it-it/article/Modificare-l-aspetto-di-un-controllo-utilizzando-la-formattazione-condizionale-6ba9e9fa-4347-4183-b335-44e43b05e22f
 
 
o scrivi su google "formattazione condizionale access"
 
BFS


##########################################################
 
Buongiorno, in rete ho trovato il codice sotto che ho modificato in base alla mia necessità:
 
Private Sub Form_Open()
 
Dim rstScadenza As DAO.Recordset
 
Set rstScandenza = CurrentDb.OpenRecordset("tb_scadenze", dbOpenDynaset)
 
Do Until rstScadenza.EOF
 
            If Now > Me.scadenza Then
 
                       Me.Testo9.BackColor = vb.red
                       Else
                       Me.Testo9.BackColor = vb.white
             End If
 
 rstScadenza.MoveNext
 
Loop
 
rstScadenza.Close
End Sub
 
##################################################################
 
ma mi da errore su:
Do Until rstScadenza.EOF 
 
mi date una dritta?
grazie


Quale errore?


ma cosa ti aspetti che faccia il codice che hai postato?
è assurdo indipendentemente dall'errore
 
 


"ERRORE DI RUNTIME 91"
"VARIABILE OGGETTO O VARIABILE DEL BLOCCO WITH NON IMPOSTATA"
 
grazie Davide

 "VARIABILE OGGETTO O VARIABILE DEL BLOCCO WITH NON IMPOSTATA"
 
Controlla il contenuto di rstScadenza in fase di debug.
 
Prova anche a mettere un rstScadenza.MoveFirst prima del Do (non dovrebbe servire normalmente, ma verifichiamo che non succeda qualcosa di strano).
 
Su Debug scegli Compila e vedi se ti vengono segnalati errori.
 
Ciao


non ha comunque senso quel codice
anche se lo scorrimento del recordset funzionasse non fa altro che 
confrontare sempre now con me.scadenza che non ha nulla a che fare con 
il recordset che sta scorrendo ma che prende sempre gli stessi valori in 
base a dove è posizionato il cursore
 
la soluzione è di 5 secondi..basta impostare la formattazione 
condizionale nel campo scadenza
 
boh
 
 


Hai ragione, non avevo letto la routine, ho avuto le allucinazioni perché riguardandola mi sembra diversa da ciò che avevo letto...
 
Ciao