Condividi tramite

formattazione condizionata in access 2007 vba

Anonimo
2016-03-09T19:31:52+00:00

Salve, mi potete aiutare a capire come va applicata la formattazione condizionata con codice vba .

Il mio programma è utilizzato gestire le presenze e i permessi , infatti in una query ho tutti i dati ordinati per malattia, ferie , Permessi, legge104 e varie ed in un altra tabella con raggruppamento ,che viene visualizzata in una form con maschera continua, con evidenziato il giorno e le ore  nel campo TG1 ......... Quello che mi occorre è visualizzare al posto delle ore sul campo Tg1 un colore in base al valore della query (malattia = rosso ferie= verde ecc...)

Grazie Mille

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

9 risposte

Ordina per: Più utili
  1. Anonimo
    2016-03-10T12:38:57+00:00

    Mi potresti indicare un buon testo di Access 2007 Vba.

    Grazie

    Domenico

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-03-10T12:35:09+00:00

    e' possibile farlo cosi' : perchè mi appoggio alla tabella "tabmaskcolor" e la visualizzazione deve essere di tutti i dipendenti anche di chi non ha nussun giustificativo. Quello che mi hai proposto funziona ma ripete i giustificativi come sono sulla query.

    adesso ho fatto una prova cosi ma non colora nessun campo.

    ciao Grazie della tua pazienza

    Private Sub Maskcolor()

    Dim strsql As String

    Dim strsql1 As String

    Dim strsql2 As String

    Dim strsql3 As String

    Dim i As Integer

    Dim j As Integer

    Dim t As Integer

    Dim gg As String

    Dim datamask As String

    Dim TR As Form  'Form sottomaschera

    Dim fcondition As FormatCondition

    Dim giustificativo As String

    Set db = CurrentDb

    'strsql = "select * from dipendenti " '&

    '"WHERE [dipendenti.team] = '" & tee & "'"

    strsql1 = "SELECT IDDip, giustificativo, mese,data, anno, team, qta, totalegg, tg1, tg2, tg3, tg4, tg5,tg6,tg7, " & _

    " tg8,tg9,tg10,tg11,tg12,tg13,tg14,tg15,tg16,tg17,tg18,tg19,tg20,tg21,tg22,tg23,tg24,tg25,tg26,tg27,tg28,tg29,tg30,tg31  from Dettaglio_permessi_query " & _

    " WHERE [mese] = " & MeseN & " And [Anno] = " & AnnoN & ""

    'strsql1 = "SELECT IDDip, Cognome, Nome, mese, anno, Team, totaleore, tg1, tg2, tg3, tg4, tg5, tg6, tg7, " & _

    '" tg8,tg9,tg10,tg11,tg12,tg13,tg14,tg15,tg16,tg17,tg18,tg19,tg20,tg21,tg22,tg23,tg24,tg25,tg26,tg27,tg28,tg29,tg30,tg31,totgg from funzionacolor " & _

    '" WHERE [mese] = " & MeseN & " And [Anno] = " & AnnoN & ""

    strsql2 = "select id ,IDdip, Cognome, Nome, mese, anno, Team, totaleore, tg1, tg2, tg3, tg4, tg5, tg6, tg7, " & _

    " tg8,tg9,tg10,tg11,tg12,tg13,tg14,tg15,tg16,tg17,tg18,tg19,tg20,tg21,tg22,tg23,tg24,tg25,tg26,tg27,tg28,tg29,tg30,tg31 from tabMaskTotal"

    'If tee = "tutti" Then

    'Exit Sub

    'End If

     Me.contaPersone = DCount("team", "dipendenti")

    'Set rs = db.OpenRecordset(strsql, dbOpenSnapshot)

    Set rs1 = db.OpenRecordset(strsql1, dbOpenSnapshot)

    Set rs2 = db.OpenRecordset(strsql2, dbOpenDynaset)

    'Set rs3 = db.OpenRecordset(strsql3, dbOpenSnapshot)

    'Do Until rs2.EOF

    'rs2.Delete

    'rs2.MoveNext

    'Loop

    Do Until rs1.EOF

    rs2.MoveFirst

    For i = 0 To rs1.RecordCount - 1

    rs2.FindFirst "iddip = " & rs1.Fields("iddip").Value

    Me.giust = rs1.Fields("giustificativo").Value

    giustificativo = Me.giust

    Debug.Print rs1.Fields("giustificativo").Value

    j = Day(rs1.Fields("data").Value)

    Me.Controls("tg" & j).FormatConditions.Delete

        Set fcondition = Me.Controls("tg" & j).FormatConditions.Add(acExpression, acEqual, "giustificativo ='legge104'") ' <----attento agli apici

        Set fcondition = Me.Controls("tg" & j).FormatConditions.Add(acExpression, acEqual, "giustificativo ='FAC'") '<----attento agli apici

        With Me.Controls("tg" & j).FormatConditions(0)

           .BackColor = vbRed

        End With

        With Me.Controls("tg" & j).FormatConditions(1)

            .BackColor = vbGreen

        End With

    rs1.MoveNext

    Next i

    Loop

    rs1.Close

    Set rs1 = Nothing

    rs2.Close

    Set rs2 = Nothing

    Set fcondition = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-03-10T10:55:07+00:00

    ciao Domenico,

    Grazie per l'esempio, ma per l'espressione come posso comparare  dati da una tabella e una query ?

    prego.

    il recordSource della tua form deve avere anche il campo giustificativo, quindi la query devi estrarre anche questo campo come da seconda immagine.

    trascina nella maschera a visualizzazione continue il campo giustificativo, impostalo pure come visibile=no se non ti interessa mostrarlo/vederlo. ( esattamente come il controllo txtSerial della demo che ti ho mostrato, nascosto ma che determina il festivo o no from tblDate).

    poi modifica la sub setFC nel seguente modo (ovviamente non riesco a testarla senza il tuo scenario a portata di mano, vado a rigor di logica) :

    Sub setFC()

    Dim fcondition       As FormatCondition

    Me.tg1.FormatConditions.Delete

        Set fcondition = Me.tg1.FormatConditions.Add(acExpression, acEqual, "[giustificativo]='legge 104'") ' <----attento agli apici

        Set fcondition = Me.tg1.FormatConditions.Add(acExpression, acEqual, "[giustificativo]='FAC'") '<----attento agli apici

        With Me.tg1.FormatConditions(0)

           .BackColor = vbRed

        End With

        With Me.tg1.FormatConditions(1)

            .BackColor = vbGreen

        End With

    Set fcondition = Nothing

    End Sub

     da richiamare su load  della tua Form :

    Private Sub Form_Load()

    setFC

    End Sub

    dovresti vedere il controllo tg1 con sfondo rosso e verde in corrispondenza rispettivamente di legge 104 e FAC.

    Facci sapere!

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-03-10T10:21:11+00:00

    Grazie per l'esempio, ma per l'espressione come posso comparare  dati da una tabella e una query ?

    varExpression = "weekday([ddata])=1 or weekday([ddata])=7 or [txtserial]=-1"

    mi occorre che il campo tg1 ed altri (per esempio) vengano colorati in base al giustificativo che si trova sulla query2 in questo caso il campo tg1 riporta il valore di 2 ore e nella query 2, sotto giustificativo (legge104).

    Grazie mille 

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2016-03-09T22:53:50+00:00

    ciao Domenico,

    forse un esempio è maggiormente esplicativo.

    prova a vedere se questa demo ti aiuta: http://1drv.ms/1LdpLYO  fCondition2.accdb.

    in particolare la form tblDate evidenzia in rosso le festività dell'anno compreso sabato e domenica, giovedì' in verde e  i martedì in giallo via VBA.

    ci sono poi altre due forms in cui la formattazione condizionale ha più di tre condizioni, impostate manualmente.

    HTH-

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento