Etichetta Maschera con formattazione condizionale

di il
23 risposte

23 Risposte - Pagina 2

  • Re: Etichetta Maschera con formattazione condizionale

    OsvaldoLaviosa ha scritto:


    Juan ha scritto:


    ho bisogno che la condizione di cambiare colore al pulsante venga sincronizzata non con il singolo record. Ma quando anche un solo record di quel campo abbia un valore uguale o minore di 0.

    OsvaldoLaviosa ha scritto:


    applichi la "formattazione condizionale"

    Juan ha scritto:


    Non me la fa applicare ai pulsanti. Quindi credo serva vba
    Ho evidenziato giusto queste ultime, tuttavia propongo un reset mentale e una descrizione dettagliata così:
    - nomi propri di tabelle, query, maschere (per le maschere specifica se si tratta di "maschera singola", "maschera continua", "maschera in foglio dati")
    - nomi propri di tutti i campi
    - indicare su quali campi dove deve essere osservata l'eventuale formattazione condizionale
    - nomi propri dei controlli nelle maschere
    - mostra un recordset di valori significativi e spiega passo passo cosa deve succedere usando i nomi propri
    Ragazzi grazie per il vostro tempo. Mi dispiace che non riesco ad essere chiaro, ci riprovo:

    Tabella "Materiale" con i campi: Marca-modello-fabbricazione(campo data)-scadenza(campo data).

    Query chiamata "QueryScadenze" dove sono stati caricati tutti i campi della tabella "Materiale" ed in più è stato aggiunto un campo chiamato "Giorni alla scadenza" che visualizza i valori in base a questo criterio "GIORNI ALLA SCADENZA: ([SCADENZA])-Date()" quindi in questo campo mi visualizza quanti giorni mancano alla data di scadenza del materiale per ogni record inserito.

    Maschera DIVISA chiamata "VisualizzaMateriale" che fa riferimento alla Query "QueyScadenze". Quindi in questa maschera vengono visualizzati tutti i record inseriti nella tabella più il campo "Giorni alla scadenza" che viene calcolato dalla query "queryScadenze"

    Quindi TABELLA -> QUERY -> MASCHERA.

    Ora ho creato una maschera di APERTURA (un menù principale) dove ci sono solo pulsanti ed etichette che fanno riferimento a varie maschere. Io vorrei che l'etichetta del pulsante oppure il pulsante stesso che apre la maschera "VisualizzaMateriale" si colorasse di rosso se all'interno del campo "Giorni alla scadenza" della maschera "VisualizzaMateriale" ci sia un valore uguale o minore di 0(ZERO).

    Il mio obiettivo è quello che quando apro la Maschera di apertura (menù principale) riesco a vedere da subito in base al colore dell'etichetta o del pulsante (che apre la maschera "visualizzaMateriale") se all'interno della maschera "VisualizzaMateriale" c'è un attrezzatura scaduta senza che vado ad interrogare la maschera.

    Grazie.
  • Re: Etichetta Maschera con formattazione condizionale

    Juan ha scritto:


    La maschera è singola e non contiene dati nel senso che si tratta di una maschera principale all'apertura che contiene tutti i pulsanti per aprire le maschere del database. Un menù principale. Ora ogni tasto ha una propria etichetta che vorrei che si colorasse in base ai valori presenti nella colonna di una query. Quando in questa colonna della query appare un valore uguale o minore di 0 (anche se si tratta di un solo record) l'etichetta si dovra colorare.
    Ho provato a rileggere tutto con più attenzione. Qualche nome proprio sarebbe stato utile. Chiamerò:
    MenuPrincipale la maschera con i pulsanti
    Query1 la query con la colonna X dove si deve osservare un certo valore
    Query2 una query che parte da Query1 e FILTRA i valori <=0 della colonna X
    Pulsante il pulsante
    Per semplificazione userò la proprietà BackColor del Pulsante che diventa Rosso nel caso in Query1 ci sia almeno un record con la condizione proposta...ma ciò sarà evidenziato/calcolato sulla Query2.

    All'evento "Su corrente" di maschera MenuPrincipale, scrivi questo:
    Private Sub Form_Current()
    If DCount("*","Query2") > 0 Then Me!Pulsante.BackColor = vbRed
    End Sub
    Conferma se ho capito la tua problematica!
  • Re: Etichetta Maschera con formattazione condizionale

    All'apertura della form controlli così:
    
    me.nomeControllo.backcolor=iif(nz(dmin("nomeColonnaCalcolata","nomeQuery","eventualiFiltri"),1)<=0,colore1,colore2)
    
    io avevo capito che avessi N pulsanti da colorare in base a valori di + colonne o + SQL ...
  • Re: Etichetta Maschera con formattazione condizionale

    OsvaldoLaviosa ha scritto:


    Juan ha scritto:


    La maschera è singola e non contiene dati nel senso che si tratta di una maschera principale all'apertura che contiene tutti i pulsanti per aprire le maschere del database. Un menù principale. Ora ogni tasto ha una propria etichetta che vorrei che si colorasse in base ai valori presenti nella colonna di una query. Quando in questa colonna della query appare un valore uguale o minore di 0 (anche se si tratta di un solo record) l'etichetta si dovra colorare.
    Ho provato a rileggere tutto con più attenzione. Qualche nome proprio sarebbe stato utile. Chiamerò:
    MenuPrincipale la maschera con i pulsanti
    Query1 la query con la colonna X dove si deve osservare un certo valore
    Query2 una query che parte da Query1 e FILTRA i valori <=0 della colonna X
    Pulsante il pulsante
    Per semplificazione userò la proprietà BackColor del Pulsante che diventa Rosso nel caso in Query1 ci sia almeno un record con la condizione proposta...ma ciò sarà evidenziato/calcolato sulla Query2.

    All'evento "Su corrente" di maschera MenuPrincipale, scrivi questo:
    Private Sub Form_Current()
    If DCount("*","Query2") > 0 Then Me!Pulsante.BackColor = vbRed
    End Sub
    Conferma se ho capito la tua problematica!
    Osvaldo ho scritto sopra
  • Re: Etichetta Maschera con formattazione condizionale

    Mi pare di capire che adesso è tutto più chiaro e le soluzioni proposte da me e muttley005 si assomigliano.
    Nel mio suggerimento, se non vuoi usare una Query2, puoi fare il DCount su Query1 e sfruttare il terzo argomento come filtro (con apposita sintassi).
  • Re: Etichetta Maschera con formattazione condizionale

    muttley005 ha scritto:


    All'apertura della form controlli così:
    
    me.nomeControllo.backcolor=iif(nz(dmin("nomeColonnaCalcolata","nomeQuery","eventualiFiltri"),1)<=0,colore1,colore2)
    
    io avevo capito che avessi N pulsanti da colorare in base a valori di + colonne o + SQL ...
    Grazie mille ho risolto. Grazie anche ad Osvaldo. Vorrei offrirvi un caffè.

    Muttley ho usato il tuo suggerimento e funziona.
    Ma volendo impostare più criteri con colori diversi? Per esempio: con il codice che mi hai dato tu se all'interno della colonna X di una query Y c'è un valore uguale o inferiore di 0 allora l'interruttore si colora di rosso. Ma se volessi aggiungere anche un secondo criterio che con un valore da 0 a 90 si colora di giallo? E nel caso in cui ci sono tutti e due i valori contemporaneamente nella colonna si da la priorità al primo criterio e cioè =<0

    Scusate se ne approfitto ma siete gentilissimi.
  • Re: Etichetta Maschera con formattazione condizionale

    muttley005 ha scritto:


    All'apertura della form controlli così:
    
    me.nomeControllo.backcolor=iif(nz(dmin("nomeColonnaCalcolata","nomeQuery","eventualiFiltri"),1)<=0,colore1,colore2)
    
    io avevo capito che avessi N pulsanti da colorare in base a valori di + colonne o + SQL ...
    Come vedi ora che la situazione è più chiara, conferma che le soluzioni precedenti erano assurde.
    Questa mi trova invece più allineato, tuttavia suggerisco che il codice sia inserito su CURRENT della Maschera basata sulla Query, che peraltro se ha già al suo interno il campo Calcolato di Scadenza... semplifica ulteriormente le cose.

    Se non ricordo male la Maschera divisa viene vista come SottoMaschera della principale...?
    
    Private Sub Form_Current()
        If Me!NomeControlloScadenza<5 Then ' scrivo 5 in quanto non so come vuole gestire i gg di scadenza per il colore
            Forms!NomeMascheraPrincipale.NomeControllo1.BackColor=ColoreScadenza
            Forms!NomeMascheraPrincipale.NomeControllo2.BackColor=ColoreScadenza  
            '..... altri eventuali      
        Else
            Forms!NomeMascheraPrincipale.NomeControllo1.BackColor=ColoreNONScadenza
            Forms!NomeMascheraPrincipale.NomeControllo2.BackColor=ColoreNONScadenza  
            '..... altri eventuali     
        End if
    End Sub
    P.S. muttley, non sentirti offeso, la mia era una considerazione di METODO specifico di questo 3D non di merito personale.
  • Re: Etichetta Maschera con formattazione condizionale

    @Alex ha scritto:


    muttley005 ha scritto:


    All'apertura della form controlli così:
    
    me.nomeControllo.backcolor=iif(nz(dmin("nomeColonnaCalcolata","nomeQuery","eventualiFiltri"),1)<=0,colore1,colore2)
    
    io avevo capito che avessi N pulsanti da colorare in base a valori di + colonne o + SQL ...
    Come vedi ora che la situazione è più chiara, conferma che le soluzioni precedenti erano assurde.
    Questa mi trova invece più allineato, tuttavia suggerisco che il codice sia inserito su CURRENT della Maschera basata sulla Query, che peraltro se ha già al suo interno il campo Calcolato di Scadenza... semplifica ulteriormente le cose.

    Se non ricordo male la Maschera divisa viene vista come SottoMaschera della principale...?
    
    Private Sub Form_Current()
        If Me!NomeControlloScadenza<5 Then ' scrivo 5 in quanto non so come vuole gestire i gg di scadenza per il colore
            Forms!NomeMascheraPrincipale.NomeControllo1.BackColor=ColoreScadenza
            Forms!NomeMascheraPrincipale.NomeControllo2.BackColor=ColoreScadenza  
            '..... altri eventuali      
        Else
            Forms!NomeMascheraPrincipale.NomeControllo1.BackColor=ColoreNONScadenza
            Forms!NomeMascheraPrincipale.NomeControllo2.BackColor=ColoreNONScadenza  
            '..... altri eventuali     
        End if
    End Sub
    Grazie Alex. La maschera dove si trova il pulsante e quindi dove devo applicare la formula, è una maschera usata come menù, dove ci sono i pulsanti che aprono le rispettive maschere per consultare le tabelle. Non è collegata a nessuna query o tabella. Quindi nella formula ho la necessità di fare riferimento al campo (colonna) X della Query Y
  • Re: Etichetta Maschera con formattazione condizionale

    @Alex: guarda per fortuna non sono permaloso praticamente per nulla, semplicemente ritenevo il mio suggerimento valido secondo come avevo intuito io inizialmente la problematica.

    @Juan: per rispondere a questa
    Ma volendo impostare più criteri con colori diversi? Per esempio: con il codice che mi hai dato tu se all'interno della colonna X di una query Y c'è un valore uguale o inferiore di 0 allora l'interruttore si colora di rosso. Ma se volessi aggiungere anche un secondo criterio che con un valore da 0 a 90 si colora di giallo? E nel caso in cui ci sono tutti e due i valori contemporaneamente nella colonna si da la priorità al primo criterio e cioè =<0
    i criteri li puoi stabilire come meglio credi e puoi gestire il tutto con una serie di if nidificati o ancora meglio, se riesci, con un select case.
    Un'altra cosa, che ti ha suggerito Alex ma che avevo fatto pure io nei primi post, ok ora non è associata ma se invece la associassi?!? ti basterebbe creare l'SQL di raggruppamento/calcolo delle tue variabili ad ottenere SEMPRE E SOLO UN RECORD (non 2 e non 0) di "riassunto" e a quel punto la valutazione del colore la potresti fare dal campo associato. Però va bene/funziona anche l'utilizzo dei DMin / DSum / DCount / DMax
Devi accedere o registrarti per scrivere nel forum
23 risposte