Newsgroup: it.comp.appl.access
Titolo: Salvare modifiche a una sottomaschera.

In A2007 ho una sottomaschera che ha delle etichette colorate. A
seguito di alcune operazioni i colori vengono modificati.
Quando riapro la maschera principale, vorrei che la sottomaschera
riportasse le variazioni apportate, ma non so come fare. Sul pulsante
corrispondente della maschera ho messo, dopo la chiusura, una chiamata
a una routine che letteralmente la rifà, ma sembra che non sia
eseguita.
Se invece eseguo questa routine manualmente, a maschera chiusa, tutto
funziona.
Sicuramente è una sciocchezza, ma ho bisogno di qualcuno che mi
spieghi dove sto scioccando.Grazie.
Riccardo Baldinotti


il colore delle etichette varia in base ai dati presenti in quel momento 
nella sottomaschera, o vengono letti da una tabella del tipo:
nome-etichetta|codice colore
dove memorizzi gli ultimi colori impostati ?
ciao
BFS


La seconda che hai detto...
Volevo evitare di riscrivere preventivamente la sottomaschera ogni
volta che devo aprirla.
Grazie.
Riccardo Baldinotti


il codice che imposta il forecolor alle etichette lo hai sulla maschera 
principale o sulla sottomaschera? su che evento?
BFS


Il colore delel etichette può cambiare per la pressione di un pulsante
posto di fianco a ciascuna di esse. Sono delle 'sezioni' di cui
l'utente può modificare l'ordine.
Il pulsante si trova nella sottomaschera, mentre la funzione è in un
modulo esterno, chiamata così =Funzione() nell'evento SuClick.
Se, dopo avere modificato i colori, visualizzo la struttura della
maschera e quindi chiudo, Access chiede se voglio salvare la
sottomaschera e, se rispondo di sì, quando la riapro la sottomaschera
è aggiornata. Se invece chiudo la maschera da codice, con DoCmd.Close
"maschera", acSaveYes, la sottomaschera non viene salvata.
Grazie.
Riccardo Baldinotti


Non ho capito questa storia di dover passare in modalità struttura..cmq 
io farei così:
tabella1 con campi idetichetta e colore
quest'ultimo con il valore numerico del colore della etichetta
sul caricamento della maschera credo metterei qualcosa del genere per le 
varie etichette:
Me.Etichetta0.ForeColor = DLookup("colore", "tabella1","idetichetta=0")
Me.Etichetta1.ForeColor = DLookup("colore", "tabella1","idetichetta=1")
Me.Etichetta2.ForeColor = DLookup("colore", "tabella1","idetichetta=2")
se sono tante farei un ciclo del recordset per impostare i colori...
e sull'evento chiusura della maschera avrai del codice che va a salvare 
nella tabella dei colori, il valore numerico del colore della etichetta 
al momento della chiusura.
docmd.runsql "delete * from tabella1"
docmd.runsql "insert into tabella1 (idetichetta, colore) values '" & 
me.etichetta0 & "'," & cdbl(me.etichetta0.forecolor)
docmd.runsql "insert into tabella1 (idetichetta, colore) values '" & 
me.etichetta1 & "'," & cdbl(me.etichetta1.forecolor)
docmd.runsql "insert into tabella1 (idetichetta, colore) values '" & 
me.etichetta2 & "'," & cdbl(me.etichetta2.forecolor)
BFS


In effetti è così che produco la maschera. Il mio problema è che, non
sapendo a priori se il numero di etichette varierà, non posso
limitarmi a dare un colroe alle etichette, ma devo letteralmente
crearle, tante quante saranno un domani.
Però potrei adottare un compromesso: uso il metodo come lo descrivi, e
nel caso in cui l'utente aggiungesse una sezione, solo allora
attiverei la funzione che aggiunge un'etichetta.
Vado a provare. Grazie ancora.
Riccardo Baldinotti