Newsgroup: it.comp.appl.access
Titolo: Formattazione condizionale

Ho una maschera continua dove c'è una casella di testo che ha come origine un campo della tabella associata.
Il valore del campo è un numerico, e rappresenta un codice colore, lo stesso che si mette per colorare bordi e sfondo nella proprietà della casella.
Vorrei fare in maniera, da vba, che si attivasse su quella casella una formattazione condizionale, cioè che il suo Back color fosse lo stesso del suo valore. 
Ovviamente ogni record avrà valori diversi e quindi colori diversi.
Qualcuno mi può aiutare a scrivere il codice e ad applicarlo nel giusto evento della form?
Grazie

Non ho tempo per valutare, ma potrebbero esser utili questi 2 linq
 
http://forum.masterdrive.it/access-79/access-formattazione-condizionale-tramite-vba-44586/
 
http://forum.ialweb.it/forum_posts.asp?TID=16463584&title=risolto-colore-testo-su-altra-casella
 
 
comunque su google, con parole chiave trovi molto, come ho fatto con i 2 linq postati
 
Dragons

Grazie Dragons
Ma avevo già guardato e non ho risolto.
Magari non è fattibile....

E' che mi sono chiesto: se c'è nella barra dei menu si potrà personalizzare anche da codice...


Non vorrei non aver capito il problema, ma scrivere
 
If Me!mioControllo=12345 Then
     Me!MioControllo.Backcolor=12345
		oppure
     Me!MioControllo.Backcolor= RGB(x,y,z)
End If
 
non va bene?
 
Ciao
 
 

Purtroppo no. È necessaria una formattazione condizionale. 
Immagina che io abbia una tabella con una lista di prodotti. Ogni prodotto ha un colore diverso. Nella maschera continua voglio vederlo. Nella tabella ho memorizzato per ogni prodotto il suo colore (es rosso = 255, nero = 0)

 
 
Da VBA non è possibile come confermato dai numerosi post nel forum.
 
Non dici che versione di Access usi, ma se è la 2007 o superiore, il 
limite di tre condizioni imposto fino alla 2003 è stato superato (io sto 
usando ora, anche se molto poco, A2010).
Purtroppo di più non sono in grado di dirti (sarebbe stato utile anche 
per me).
 
Ciao
 

Hai ragione Mantro.  Il codice sono riuscito a scriverlo ma vale solo per tre condizioni. Ho una versione vecchia. 
Sarebbe stato aggirabile creando più controlli sovrapposti nella form per aumentare le casistiche (10 controlli x 3 condizioni = 30 colori) ma nella formattazione condizionale non si può usare la proprietà visibile o non è i controlli sovrapposti coprono il risultato. Sennò sarebbe stato perfetto.
Grazie di tutto.
Stefano

Facendola semplice, ammettiamo di avere un solo controllo per ogni record che vuoi visualizzare.
Purtroppo, come già detto da altri colleghi, la formattazione differente (in questo caso il backcolor del controllo in base a valori numerici contenuti nel record) nella maschera continua non è permessa (questa da sempre con  Access).
Infatti, se ci provi, in maschera continua ogni controllo verrà "colorato" come ti aspetti SOLAMENTE quando lo selezioni col mouse, ma nello stesso modo (cioè con lo stesso colore) saranno colorati contemporaneamente anche TUTTI gli altri record.
 
Se può essere utile, in una situazione come questa, io mi sono mosso così:
Modo1: metto la  maschera in maschera singola, e con i controlli "spostamento tra record" faccio sfogliare i record uno per uno (basta mettere il codice che colora nell'evento "su corrente" della maschera.
Se non  basta:
Modo2: creo un report che visualizzi i controlli (in questo caso li puoi colorare come vuoi).
 
Come dire, meglio di niente!  ;-)
 
Commento personale: peccato che quanto faccia il report non lo possa fare anche la  maschera (continua), è un'esigenza emersa più volte sul forum.
Ma tant'è...
 
Ciao
iLanders


Grazie iLanders. 
Ho messo temporaneamente un evento che mi apre una maschera singola con il colore del record che seleziono. Ma è un palliativo. Modifichero' il tutto quando in azienda mi passeranno ad una versione più recente di access con la formattazione condizionale con n opzioni e non solo tre.

 Ho messo temporaneamente un evento che mi apre una maschera singola con il colore del record che seleziono. Ma è un palliativo. Modifichero' il tutto quando in azienda mi passeranno ad una versione più recente di access con la formattazione condizionale con n opzioni e non solo tre.
 
Ciao gram,
ogni soluzione che simula una formattazione in maschere continue (nel senso indicato nel mio post precedente) è un palliativo, sono d'accordo.
Mi risulta però che la formattazione condizionale (anche a n condizioni) ti permette di formattare un controllo facendoti scegliere i colori solo dalla palette predefinita. Se questo può bastare, ben venga, hai risolto il tuo problema.
 
A me piacerebbe invece poter dare come backcolor un long qualsiasi, in modo da colorare il controllo col colore che voglio, non solo quelli della palette.
Esempio:
un campo che contiene il valore 2631894, e un controllo rettangolo da colorare col colore 2631894 (è un Rosso Ciliegia che nella palette standard non c'è) per mezzo dell'istruzione Me!Rett02.BackColor = 2631894.
Avrei bisogno di avere in maschera continua l'elenco dei campi (ognuno col suo valore, differente dagli altri) e a fianco il rispettivo rettangolo colorato. Questo (almeno per quanto ne so) non è possibile.
Ecco perché ho "palliato" facendo sfogliare all'utente una maschera singola, o facendogli aprire un report (dove si possono vedere tutti). 
 
Ciao.
iLanders.
 
P.S. Se qualcuno avesse una soluzione al mio (ma immagino anche di molti altri) problema, sia benvenuto! ;-)

 Ho messo temporaneamente un evento che mi apre una maschera singola con il colore del record che seleziono.
 
 
potresti valutare l'idea di usare un datagrid invece di una maschera 
continua.
per molto tempo io ho usato questo
 
http://www.vbaccelerator.com/home/VB/Code/Controls/S_Grid_2/S_Grid_2/article.asp
 
 
ma ce ne sono altri free e a pagamento
 
hai il pieno controllo di ogni singola cella, puoi farla di che colore 
vuoi, inserirci icone testo etc etc etc
 
ciao
BFS

Ciao iLanders,
Ho trovato questo è funziona. Ovviamente sul 2003 le tre regole rimangono il limite
 
http://www.access-programmers.co.uk/forums/showthread.php?t=229127
 
 
Saluti
Stefano