Newsgroup: it.comp.appl.access
Titolo: colorare tramite codice un rettangolo

Ho un report
dipendentemente dal valore di un campo voglio colorare o meno un RETTANGOLO
quindi pensavo di utilizzare la seguente istruzione:
=IIf([rompic]='Scarso';Casella15.BackColor ='Red';Casella15.BackColor 
='Yellow')
dove [rompic] è una CASELLA DI TESTO che può contenere la stringa 'Scarso'
e Casella15 è un RETTANGOLO
l'istruzione la metto nel campo DATI di una CASELLA DI CONTROLLO messa 
apposta perchè non sapevo dove mettere l'istruzione stessa
Non avviene nulla (il RETTANGOLO non si colora)
Probabilmente metto l'istruzione nel posto sbagliato...
Dove metterla o come modificare il codice?
Grazie 

 ha scritto nel messaggio news:pJXOe.97771$fm.65...@news4.tin.it...

Devi impostare lo sfondo a "normale"; poi la proprietà BackColor (vedi help) vuole dei numeri in formato Long; questo è un esempio:
Dim lngRed As Long, lngYellow As Long, lngWhite As Long
lngRed = RGB(255, 0, 0)
lngBlack = RGB(0, 0, 0)
lngYellow = RGB(255, 255, 0)
lngWhite = RGB(255, 255, 255)
Select Case Me!Cornice0
    Case 1
        Me!Casella7.BackColor = lngRed
    Case 2
        Me!Casella7.BackColor = lngYellow
    Case Else
End Select
Cornice0 è un gruppo opzioni con due bottoni; Casella7 è il rettangolo...
Ciao.
-- 
Sergio MAZZA 

        Me!Casella7.BackColor = lngRed ...
Grazie ma ho ancora un problema (mi sono spiegato male e sono un NEWBIE)
Sono in un report
c'è un campo che può avere 3 valori
quando c'è il primo valore voglio colorare un rettangolo in giallo
quando c'è il secondo valore voglio colorare lo stesso rettangolo blu
quando c'è il terzo valore voglio colorare il rettangolo in giallo
(semplifico il problema)
1) non so dove mettere il codice
ho provato in EVENTO (APERTURA REPORT)
perchè senò non so dove metterlo (anche se deve essere eseguito ogni volta 
che viene visualizzato un nuovo record...)
2) ho provato a scrivere il seguente codice
Private Sub Report_Open(Cancel As Integer)
    Dim lngRed As Long
    lngRed = RGB(255, 0, 0)
        Casella15.BackColor = lngRed
End Sub
scritto così mi colora tutti i rettangoli in rosso
semplificando voglio che vengano colorati solo i rettangoli rossi quando il 
campo della tabella "rompic" su cui si basa il report assume il valore di 
"scarso"
quindi provo a scrivere
Private Sub Report_Open(Cancel As Integer)
    Dim lngRed As Long
    lngRed = RGB(255, 0, 0)
    If (rompic = "Scarso") Then
        Casella15.BackColor = lngRed
    End If
End Sub
mi viene segnalato l'errore perchè non riesce a capire il riferimento al 
campo...

 mi viene segnalato l'errore perchè non riesce a capire il riferimento al campo...
Non ci siamo; dovresti prima cercare di capire come si compone il report di access, ovvero le sue sezioni e la loro funzionalità.
Comunque; devi gestire l'evento "su formattazione" della sezione Corpo, perchè?
Perché l'unica sezione che viene ripetuta per ogni record è il Corpo e visto che ogni record avrà un valore diverso del "campo", e, 
bisogna modificare gli oggetti (caselle di testo, rettangoli, etichette di testo, etc.) prima che venga riprodotto 
(anteprima/stampa) devi gestire l'evento "su formattazione".
Qui ci inserisci il codice VBA (routine evento) per modificare la proprietà "colore sfondo" (BackColor) del rettangolo (prima devi 
sempre impostare il tipo di sfondo a "normale");
es.
Dim lngRed As Long, lngYellow As Long, lngWhite As Long, lngBlack As Long
lngRed = RGB(255, 0, 0)
lngBlack = RGB(0, 0, 0)
lngYellow = RGB(255, 255, 0)
lngWhite = RGB(255, 255, 255)
Select Case Me!nomeCampo
    Case "valore1"
        Me!nomeRettangolo.BackColor = lngRed
    Case "valore2"
        Me!nomeRettangolo.BackColor = lngYellow
    Case "valore3"
        Me!nomeRettangolo.BackColor = lngBlack
    Case "valore4"
        Me!nomeRettangolo.BackColor = lngWhite
    Case Else
End Select
Ciao.
-- 
Sergio MAZZA