Newsgroup: it.comp.appl.access
Titolo: enumerazione controlli

Buonasera a tutta la lista.
Vengo al dunque:devo iterare tutti i controlli di una applicazione che
contiene una form e tre subform,ho il problema che non riesco ad iterare i
controlli nelle subform.Sapete come posso uscirne?Grazie a tutti per
l'attenzione.

 ha scritto nel messaggio
news:rdclb.56140$e6.19...@twister2.libero.it...

Per riferirsi ad una sottomaschera la sintassi è
me.controllosottomaschera.form.XXXXX dove XXXX è qualunque metodo o
proprietà o controllo riferibile ad una form
Antonio

 ha scritto nel messaggio
news:rdclb.56140$e6.19...@twister2.libero.it...

Se l'iterazione la fai a fronte di un evento della maschera principale.
Se i tre controlli sottomaschera si chiamano rispettivamente SubForm1,
SubForm2 e Subform3.
Se in una casella di testo non associata inserita nella maschera pincipale e
che si chiama Elenco vuoi inserire i nomi, scanditi da una virgola, di tutti
i controlli della maschera principale e delle 3 sottomaschere esclusi i nomi
delle etichette e dei 3 controlli sottomaschera.
Prova con il seguente codice VBA:
Dim ctl As Control
Dim ctl1 As Control
Dim ctl2 As Control
Dim ctl3 As Control
For Each ctl In Me.Controls
If ctl.ControlType <> acLabel Then
If ctl.ControlType = acSubform Then
If ctl.Name = "SubForm1" Then
For Each ctl1 In Me!SubForm1.Form.Controls
If ctl1.ControlType <> acLabel Then
Elenco = Elenco & ctl1.Name & ", "
End If
Next ctl1
Else
If ctl.Name = "SubForm2" Then
For Each ctl2 In Me!SubForm2.Form.Controls
If ctl2.ControlType <> acLabel Then
Elenco = Elenco & ctl2.Name & ", "
End If
Next ctl2
Else
If ctl.Name = "SubForm3" Then
For Each ctl3 In Me!SubForm3.Form.Controls
If ctl3.ControlType <> acLabel Then
Elenco = Elenco & ctl3.Name & ", "
End If
Next ctl3
End If
End If
End If
Else
Elenco = Elenco & ctl.Name & ", "
End If
End If
Next ctl
Elenco = Left(Elenco, Len(Elenco) - 2)
Dovrebbe funzionare
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:rdclb.56140$e6.19...@twister2.libero.it...

Così è più semplice:
Se l'iterazione la fai a fronte di un evento della maschera principale.
Se in una casella di testo non associata inserita nella maschera pincipale e
che si chiama Elenco vuoi inserire i nomi, scanditi da una virgola, di tutti
i controlli della maschera principale e delle 3 sottomaschere esclusi i nomi
delle etichette e dei 3 controlli sottomaschera.
Prova con il seguente codice VBA:
Dim ctl As Control
Dim ctl1 As Control
For Each ctl In Me.Controls
If ctl.ControlType <> acLabel Then
    If ctl.ControlType = acSubform Then
        For Each ctl1 In Me(ctl.Name).Form.Controls
            If ctl1.ControlType <> acLabel Then
                Elenco = Elenco & ctl1.Name & ", "
            End If
        Next ctl1
    Else
        Elenco = Elenco & ctl.Name & ", "
    End If
End If
Next ctl
Elenco = Left(Elenco, Len(Elenco) - 2)
é più compatta. :-)


 ha scritto nel messaggio
news:rdclb.56140$e6.19...@twister2.libero.it...

Teoricamente gestendo bene la funzione For each ctl in NomeForm.Control
ed usando una ricorsiva si può fare con poche righe di codice.
In pratica quando trovi il ControlType=acSubForm lo passi alla funzione
stessa.
Non sò se mi sono spiegato.
P.S. ma se spieghi meglio cosa vuoi ottenere..........!!!!
@Alex.

 Roberto
E usare una ricorsiva dall'oggetto SubForm.....!
Ciao.
@Alex.


Grazie Roberto come al solito le tue "dritte" mi risolvono i
problemi....ciao