in Access 2000 si può lavorare da codice sulla formattazione
condizionale?
Grazie.
Si.
@Alex
> > in Access 2000 si può lavorare da codice sulla formattazione
> > condizionale?
>
> > Grazie.
>
> Si.
>
> @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.
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.
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
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
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
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�.
S�. Lo faccio tante volte con A00.
--
cu
Karl
*********
Access FAQ: www.donkarl.com/it
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.
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
> Direi che il problema è GetRecNum(). --> Posta la funzione.
è la solita preso dal sito di Alessandro:
Public Function GetRecNum(ByRef Frm As Form) As Long
On Error GoTo erh
With Frm.RecordsetClone
If Not ((.BOF = True) And (.EOF = True)) Then
.Bookmark = Frm.Bookmark
GetRecNum = .AbsolutePosition + 1
End If
End With
ext:
Exit Function
erh:
GetRecNum = 0
Resume ext
End Function
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=81
> 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.
Deve... nel senso che dovrei metterla in un altro evento?
Grazie.
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"
> 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"
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.
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.
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")
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
> Che puoi chiamare con
>
> procFC Forms!arc_frm!arc_sub_frm.Form
Grazie.