Newsgroup: it.comp.appl.access
Titolo: dubbio su LEN

dovendo per impostare un controllo sulla lunghezza di una txtbox mi sono
imbattuto in una cosa che non riesco a capire.
La sub che avevo scritto controllava la lunghezza della txtbox e poi
attivava un pulsante, ma .. non funzionava appieno, per cui disperato ho
messo questa linea diprg
        MsgBox (Len(Me!RicCognome))
attivata dall'evento change della stessa txtbox.
risultato: il valore è sempre 0 anche se la stringa è lunga  13 caratteri
spero in un vs aiuto
bc
ps .non posso indicare la proprietà .txt perchè nelle mie intenzioni c'è
l'idea di controllare più txtbox contemporaneamente e dovrei spostare il
focus ogni volta (almeno così dice l'errore che mi dà quando ci provo..)

 wrote in message
news:433a5b4d$0$8489$
5fc...@news.tiscali.it

Il problema nasce solo se usi l'evento Change, allora sei obbligato
ad usare la proprietà Text, ma se effettui il controllo su un Ciclo
non serve.
In pratica hai beccato la combinazione sfigata per fare la tua prova.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

non posso indicare la proprietà .txt perchè nelle mie intenzioni c'è
l'idea di controllare più txtbox contemporaneamente e dovrei spostare il
focus ogni volta (almeno così dice l'errore che mi dà quando ci provo..)
 ...ma se effettui il controllo su un Ciclo
non serve.
 Mi dai un suggerimento su come fare.. ho provato con un ciclo for
each...next ma non vado oltre non sapendo poi individuare le txtbox
(section? ma non non lo so fare..) abbi pietà..
saluti
BC

 wrote in message
news:433a70d7$0$8484$
5fc...@news.tiscali.it

La chiave è capire il modello ad oggetti di Access.
Tutti i controlli(che poi sono delle Classi) sono inseriti
all'interno di una Collection.
I controlli sono l'Oggetto Control
La Collection è l'Insieme Controls (la s sta per Plurale)
A questo punto sapendo che occorre scorrere tutti gli
oggetti(controlli) dell'insieme(Collection) Controls
come hai correttamente intuito si sfrutta la possibilità
di iterareli.
Dim ctl as Access.Control
For each ctl in Me.Controls
    If ctl.ControlType=acTextBox then
       ' quì esegui quello che credi
    End if
Next
Questo discorso è valido per tutte le collection, anche
quelle che ti crei tu private.


Funziona.... in parte perchè dovrebbe leggere solo le txtbox che sono
nell'intestazione della form
..in pratica sono txtbox non collegate nelle quali si immettono le stringhe
da ricercare e che vengono mostrate dopo apposita query nel sottostante
corpo della form in modalità continua..
...tutto il mio giochetto serve per abilitare dei pulsanti che  cambiano il
.recordsource della form stessa e che non devono funzionare a txtbox vuote..
spero in un altro aiuto..
grazie ancora
bc

 wrote in message
news:433a7de0$0$8500$
5fc...@news.tiscali.it

Usa la proprietà TAG per diversificarle.
Metti una X nella proprietà, quindi nel Ciclo
controlli che siano TextBox e che ctl.Tag="X"


questa è la routine chiamata dall'evento change  delle txtbox dove si
inserisce il qualcosa da cercare
Sub AttivaPulsanti()
Dim Ctl As Access.Control
For Each Ctl In Me.Controls
    If Ctl.ControlType = acTextBox And Ctl.Tag = "X" Then
     MsgBox (Len(Ctl)) 'msgbox di controllo
       If Len(Ctl) > 0 Then
          Me.CmdApri_Select.Enabled = True
          Me.CmdFiltra.Enabled = True
        Else
          Me.CmdApri_Select.Enabled = False
          Me.CmdFiltra.Enabled = False
       End If
    End If
Next
End Sub
purtroppo non funziona, ed all'improvviso l'msgbox messo per fare un
controllo (dopo lo tolgo) genera un errore : utilizzo non valido di Null-
Lo so che non sono un granchè come programmatore ma in certi momenti mi
prende lo sconforto...
grazie dei suggerimenti
bc