Newsgroup: it.comp.appl.access
Titolo: Modificare il nome di una etichetta via codice

In una maschera ho dei controlli  che hanno una etichetta il cui nome,
oggi, non è ben definito, e che dovrà essere modificato dall'utente un
giorno o l'altro.
Esempio:
il controllo X ha come etichetta "CODICE X"
il controllo Y ha come etichetta "CODICE Y" e così via.
Un bel giorno l'utente dovrà tipizzare i codici, ad esempio chiamare
"Quantità prodotto" quello che oggi si chiama "CODICE X" e "Beni
alienati" quello che oggi si chiama "CODICE Y". 
Poichè volevo rilasciare un MDE, pensavo di creare una tabella con i
nomi delle etichette attuali in nodo che l'utente modifichi la tabella
e basta.
Poi "su apertura" della maschera scrivere un pezzo di codice del tipo:
Me!Etichetta23.name = valore 23° ricavato dal record 23 di una tabella
che contiene un contatore e una descrizione ... idem per Etichetta24
etc. ... ma non so come fare.
A parte che provando il Me!Etichetta23.name = "Pippo", Access mi dice
che posso farlo solo in modo struttura e non da codice.
Idee?? Tks
Adriano
e-mail galad***NOSPAM***@
alma.it

 ha scritto nel messaggio
news:s0nlmusc8hpubskui...@4ax.com...

La tabella dovrà avere un campo con le descrizioni attuali (es
[DescAttuale]) e un campo con le descrizioni future (es [DescFutura]).
Poi, via codice, agirai sulla proprietà 'caption' dell'etichetta, non su
'name', altrimenti
1) rischi di non vederne gli effetti;
2) devi stare attento a non creare duplicati nella stessa maschera.
Per l'aggiornamento:
1) nella proprietà 'tag' di ogni etichetta da aggiornare metti un valore che
le contraddistingua dalle altre (es 'updt').
2) Cicli sui controlli della maschera (vedi nell'help il ciclo For Each...
Next)
Private Sub .... ()
Dim ctl as Control
Dim desc as String
For Each ctl in Me.Controls
    If ctl.tag = "updt" then
        If Not IsNull(Dlookup("[DescFutura]", "tbl_TuaTabella",
"[DescAttuale] = ' & ctl.caption & "'")) then
            ctl.Caption = Dlookup("[DescFutura]", "tbl_TuaTabella",
"[DescAttuale] = ' & ctl.caption & "'")
        Else
            MsgBox "Manca la nuova descrizione per l'etichetta [" &
ctl.caption & "], nella tabella delle descrizioni!!!"
            Exit Sub
        End If
    End If
Next
End Sub
Mandi Rob.

 wrote in message
s0nlmusc8hpubskui...@4ax.com...

Devi usare la proprietà Caption (vedi help) e non la proprietà Name della
etichetta.
Prova con
Me!Etichetta23.Caption = "Pippo"
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

> "TseRaa" [...]:

    Tutto quello che dici e' abbastanza chiaro in linea di massima, ma
diventa estremamente oscuro se assumiamo un uso corretto dei termini. Quindi
sara' meglio dare una aggiustatina. Non e' tutta "colpa" tua, intendiamoci.
Una buona fetta della responsabilita' ce l'hanno i traduttori Microsoft. Che
hanno fatto 'ste anime del Paradiso? Vediamo.
    Esiste una
        Class Label
            Membro di Access
che, come tutti i controlli, ha la:
        Property Name As String
            Membro di Access.Label
e la:
        Property Caption As String
            Membro di Access.Label
    La traduzione?
        Label   = Etichetta
        Name    = Nome
        Caption = Etichetta
    Bravi! Complimenti. Io avrei preferito "Caption = Didascalia". Ma mi
sarebbe anche andato bene qualsiasi altra cosa, escluso "Titolo" e "Testo".
    La situazione potrebbe anche essere piu' complicata pero'. Nel caso del
controllo "Interruttore", per esempio, che possiede le:
        Property Caption As String
            Membro di Access.ToggleButton
        Property AutoLabel As Boolean
            Membro di Access.ToggleButton
    Cioe': l'Interruttore ha una proprieta' Etichetta e puo' avere una
Etichetta allegata. La quale a sua volta ha una proprieta' Etichetta! Cosi'
qualora io dicessi "l'Etichetta dell'Interruttore" non si capirebbe a cosa
mi riferisco.
    Proprio come succede quando scrivi "In una maschera ho dei controlli che
hanno una etichetta" e con questo ti riferisci all'"Etichetta allegata",
ovviamente. Ma probabilmente nella tua maschera ci sono anche dei "Pulsanti
di comando". Attenzione: anche questi, come gli Interruttori, hanno una
proprieta' Etichetta. Meglio quindi scrivere:
    "... che hanno una etichetta allegata ..."
    Prosegui scrivendo "... il cui nome, oggi, non è ben definito, e che
dovrà essere modificato dall'utente un giorno o l'altro."
    E qui sopraggiungono dubbi di altra natura. Il nome dei controlli, come
il *nome* di qualsiasi cosa si trovi "sotto il cofano", e' cosa Sacra la cui
manipolazione e' concessa solo al Sacerdote. Gli Iniziati possono conoscerlo
ma non cambiarlo. Chiaro?
    Poi viene fuori che parli di un file MDE. Ora, siccome i Nomi dei
controlli possono essere modificati solo in visualizzazione struttura, e
siccome la visualizzazione struttura e' disabilitata nei file MDE, e'
evidente che c'e' qualcosa che non quadra nel tuo discorso. Te ne sei gia
accorto ed infatti lo scrivi. Resta solo da chiarire meglio gli scopi che ti
proponi.
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

             Membro di Access.Label
    Precisazione: da come ho scritto potrebbe sembrare che io intenda che
tutti i controlli hanno la proprieta' Caption. Ovviamente non stanno cosi'
le cose. Forse scritto cosi' e' piu' chiaro:
    Esiste una
        Class Label
            Membro di Access
che ha la:
        Property Caption As String
            Membro di Access.Label
e, come tutti i controlli, la:
        Property Name As String
            Membro di Access.Label
    Scusate.


 hanno fatto 'ste anime del Paradiso? Vediamo.
(cut)
Dai, confessa che stamattina avevi del tempo libero  :-D
Ciao, Oscar