Newsgroup: it.comp.appl.access
Titolo: A2K: formattazione condizionale da Codice

Ciao,
in Access 2000 si può lavorare da codice sulla formattazione
condizionale?
Grazie.


Si.
@Alex

 @Alex
Sai dove posso trovare qualche esempio per Access 2000 ? vorrei
comporre run-time la formula (quella del tuo esempio) e scegliere il
colore (lo prenderei da una mia tabella di impostazioni).
Grazie.
Ganimede Dignan.

 Ganimede Dignan.
Nell'Help o nel Visualizzatore Oggetti trovi tutto...!
Questo è l'Insieme delle Formattazioni, come sai al massimo sono 3:
Class FormatConditions
    Membro di Access
Questa è la Classe della Singola Formattazzione:
Class FormatCondition
    Membro di Access
Ovviamente hai a disposizione tutte le proprietà utili... nel tuo caso
sarà Expression1/2....
Ciao
@Alex


Ma in Access 2000 ? me lo confermi? ... mi pareva di aver letto che in
A2K fossero solo in lettura.
Bye.

 Bye
Purtroppo non posso confermarlo... non ho mai usato A2000... è anche
possibile che tu abbia ragione, ma te ne accorgi dall'Help che
verranno definite in sola lettura... oppure banalmente facendo una
prova...
@Alex

 Bye
Purtroppo non posso confermarlo... non ho mai usato A2000... � anche
possibile che tu abbia ragione, ma te ne accorgi dall'Help che
verranno definite in sola lettura... oppure banalmente facendo una
prova...
@Alex
In che senso solo lettura?
In ogni caso la formattazione condizionale la puoi fare tranquillamente da 
VBA
.formatcondition(0)
.formatcondition(1)
.formatcondition(2)
L'help ...ti aiuta...in quanto help... :-)
Ciao
-- 
Roberto da Parma 

 Roberto da Parma
Leggi bene quello che è stato chiesto...
Quanto hai suggerito è ovviamente da manuale, ma lui ha esplicitato il
suo dubbio in merito alla versione A2000.... sulla quale ricordo
anch'io ci fosse qualche inghippo, ma non avendo la certezza.....
In pratica chiede conferma sulla possibilità di usare in R/W tale
proprietà con A2000.
Spero di aver chiarito...
@Alex

 Roberto da Parma
Leggi bene quello che � stato chiesto...
Quanto hai suggerito � ovviamente da manuale, ma lui ha esplicitato il
suo dubbio in merito alla versione A2000.... sulla quale ricordo
anch'io ci fosse qualche inghippo, ma non avendo la certezza.....
In pratica chiede conferma sulla possibilit� di usare in R/W tale
propriet� con A2000.
Spero di aver chiarito...
@Alex
Sono sicurissimo che in ac2003 la risposta � SI.
Per ac2000 con certezza non ti saprei dire...ma basterebbe che l'interessato 
controllasse nelle librerie di ac2000
...nel frattempo ho fatto un paio di ricerche e qui sembrerebbe che la 
funzione ci sia
http://bytes.com/groups/ms-access/520981-format-condition-confusion
Basta che comunque faccia una prova di scrittura del codice e con un debug 
scopre subito l'arcano.
In linea di massima ti direi che pu�.


 In linea di massima ti direi che pu�.
S�. Lo faccio tante volte con A00.
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

Ciao a tutti,
grazi per i suggerimenti ricevuti fino ad ora.
Oggi ho fatto qualche esperimento con Access 2000.
arc_frm è il form principale e arc_sub_frm è il subform (modalità
foglio dati), il codice che riporto è nell'evento caricamento del form
principale:
Dim ctl As Access.Control
For Each ctl In Forms!arc_frm!arc_sub_frm.Controls
    Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            With ctl
                .FormatConditions.Delete
                .FormatConditions.Add acExpression, , GetRecNum(Forms!
arc_frm!arc_sub_frm.Form) Mod 2 <> 0
                .FormatConditions(0).BackColor = getobj("descrizione",
"impostazione", "obj", "actbckcolor", "16777215")
            End With
    End Select
Next ctl
Risulatato? si colorano tutte le righe, come mai? Ho anche provato a
specificare ogni controllo di arc_sub_frm
Dim ctl As Access.Control
For Each ctl In Forms!arc_frm!arc_sub_frm.Controls
    Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            With ctl
                .FormatConditions.Delete
                .FormatConditions.Add acFieldHasFocus
                .FormatConditions(0).BackColor = getobj("descrizione",
"impostazione", "obj", "actbckcolor", "16777215")
            End With
    End Select
Next ctl
Questo invece funziona perfettamente.
Vorrei anche combinare le due cose insieme... posso? come?
In pratica vorrei un colore di sfondo quando il campo è attivo e delle
righe alternate per le righe sempre... ovviamente i colori sono
differenti.
La funzione getobj restituisce il codice del colore prendendolo da una
tabella di impostazioni che l'utente riempie a proprio piacere, (se
poi il campo è vuoto ci passo un defualt, che è il numero che vedete).
Ovvio che la stessa funzione è usata per reperire tutte le altre
impostazioni della applicazione.
Grazie.
Ganimede Dignan.

Alessando... aiutami :-(
Grazie.

 ...
Direi che il problema � GetRecNum(). --> Posta la funzione.
Suppongo che si tratta di una funzione che ti d� il numero del
record corrente quindi al caricamento sempre del primo record,
non di ogni record. Se � cos�, la formattazione dev'essere sempre
la stessa.
-- 
HTH


 la stessa.
Deve... nel senso che dovrei metterla in un altro evento?
Grazie.

 Deve... nel senso che dovrei metterla in un altro evento?
No, devi avere presente il numero in ogni record.
Creati una casella di testo (puoi impostare Visibile a No)
nella sezione detaglio della sottomaschera. Chiama la
casella "txtNr" e imposta l'Origine controllo a:
=GetRecNum(Forms!arc_frm!arc_sub_frm.Form)
Poi cambia la riga di codice con Add a:
 FormatConditions.Add acExpression, , "txtNr Mod 2 <> 0"


  FormatConditions.Add acExpression, , "txtNr Mod 2 <> 0"
Ottimo, ha funzionato alla grande, sei stato utilissimo.
Mi rimane una cosa ora... combinare le due formatcondition, così non
funziona:
Dim ctl As Access.Control
For Each ctl In Forms!arc_frm!arc_sub_frm.Controls
    Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            With ctl
                .FormatConditions.Delete
                .FormatConditions.Add acExpression, , "zeb Mod 2 <> 0"
                .FormatConditions(0).BackColor = getobj("descrizione",
"impostazione", "obj", "colorzebrafrm", "16777215")
                .FormatConditions.Add acFieldHasFocus
                .FormatConditions(1).BackColor = getobj("descrizione",
"impostazione", "obj", "actbckcolor", "16777215")
            End With
    End Select
Next ctl
Cosa sbaglio?
Grazie.
Ganimede Dignan.

 Cosa sbaglio?
Soprattutto che con "non funzione" dai la descrizione pi� popolare,
esatta e espressiva.
In caso che riceveresti l'errore 7968 per un tipo invalido della FC
(o simile in italiano), prova di cambiare l'ordine delle condizioni:
Prima (0) quella con acFieldHasFocus, dopo (1) quella con acExpression.


 Prima (0) quella con acFieldHasFocus, dopo (1) quella con acExpression.
Funziona!!! Grazie 1000.
Un'ultima cosa... vorrei evitare di scrivere lo stesso codice per 20
form... per creare una function riutilizzabile dovrei passargli il
valore di form!sub_form, come posso fare ?
Grazie.
Dim ctl As Access.Control
For Each ctl In Forms!arc_frm!arc_sub_frm.Controls
    Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            With ctl
                .FormatConditions.Delete
                .FormatConditions.Add acFieldHasFocus
                .FormatConditions(0).BackColor = getobj("descrizione",
"impostazione", "obj", "actbckcolor", "16777215")
                .FormatConditions.Add acExpression, , "zeb Mod 2 <> 0"
                .FormatConditions(1).BackColor = getobj("descrizione",
"impostazione", "obj", "colorzebrafrm", "16777215")


 Next ctl
Se p.e. crei una procedura in un modulo standard:
Public Sub procFC (frm As Form)
Dim ctl As Access.Control
For Each ctl In frm.Controls
...
Che puoi chiamare con
procFC Forms!arc_frm!arc_sub_frm.Form


 procFC Forms!arc_frm!arc_sub_frm.Form
Grazie.