Newsgroup: it.comp.appl.access
Titolo: nascondere pulsanti se controllo non ha valori

Salve 
Utilizzando la proprietà tag del controllo,
volevo nascondere i pulsanti se il controllo =null.
Ho provato così ma non va bene;
 
  For Each ctl In Me
     If ctl.Tag = "Ct" Is Null Then
       If ctl.Tag = "Pl" Then
         ctl.Visible = False
       End If
     End If
  Next ctl
 
grazie


Sei certo che quella verifica che fai sulla proprietà TAG possa dare risultati ...? 
Hai imparato a fare DEBUG per capire riga per riga cosa accade...?
 
Questo controllo cosa dovrebbe fare secondo te...?
---->  If ctl.Tag = "Ct" Is Null Then 
 
La sintassi è ovviamente ERRATA ma non capisco la logica... oltetutto se TAG="Ct" poi non potrà essere "PI".... insomma metti ordine poi vediamo.
 
@Alex


grazie Alex
 
mi da subito l'errore: necessario oggetto,
la mia intenzione è quella di:
If ctl.Tag = "Ct" Is Null Then 
è come dire, se il controllo con tag "Ct" è nullo, cioè senza valori,
il pulsante con tag "Pl" non deve essere visibile 
 
 
 

 il pulsante con tag "Pl" non deve essere visibile
 
Si ma non funzionerà mai... perchè la collection control che stai ciclando non ha riferimenti fissi, ed una volta passato il controllo poi non torna indietro...!
Se hai già passato il ctl.Tag="PI" non lo trovi più... e l'indicizzazione nella collection control non può essere l'elemento che condiziona il codice.
 
Il tuo codice per come lo hai pensato è poco proponibile... al di la dell'errore tecnico che ti ho evidenziato... (dove hai trovato IS NULL...?)
Esiste la Funzione IsNull(expression) ma non si confronta un valore con IS NULL per determinare se è NULL...
Leggi questo:
http://allenbrowne.com/casu-12.html
 
 
Se vuoi controllare il contenuto del controllo in relazione alla proprietà TAG si scrive così:
 If ctl.Tag = "Ct" AND IsNull(ctl.Value) Then
    ' ma a questo punto ctl.TAG non varrà MAI "PI" quindi non potrà MAI funzionare...!
End if
 
A questo punto dal momento che la tua logica non è applicabile, anzi è fortemente errata di base, serve capire un po meglio tutto.
 
Che rapporto esiste tra il controllo con Tag="Ct" e "PI"...?
Di quanti controlli stiamo parlando...?
Perchè vuoi Ciclare la collection per fare questa cosa...?
 
@Alex


ciao Alex e grazie
 
ho creato una maschera per l'anagrafica
dove ho p.e.
nome
indirizzo
Cap
città
telefono       
cellulare
ecc.
 
per 6 controlli ho inserito un pulsante a fianco,
per visualizzare o meno i relativi dati sul report.
Ora, volevo visualizzare i pulsanti, solo dove i controlli hanno un valore.
 
 
 
 
 
 
 
 

 Ora, volevo visualizzare i pulsanti, solo dove i controlli hanno un valore.
 
In questi casi serve qualche malizia.
I Button li devi chiamare con lo stesso nome del controllo legato aggiungendo un suffisso distintivo...
Es. Se la txtbox si chiama "Cap" il button puoi chiamarlo "btn_Cap"
In questo modo assegni la proprietà TAG solo alle textbox o controllo associato che sia Sao sempre come accedere al suo button.
Ipotizziamo quindi che Tag="X" sulle textbox 
 
Quindi:
Dim Ctl as Access.Control
For each ctl in Me.Controls
    IF ctl.TAG="X" then 
        Me.Controls("btn_" & 
ctl.name
).Visible=Len(ctl.value & vbNullstring)>0
    End If
Next
 
Ragionarci su ma cerca di capirlo altrimenti i passi avanti sono zero.
 
@Alex
 


La storia è tutta qui:
===============================
Private Sub Command88_Click()
' Definisce il Tag di Command89e lo mostra
Controls("Command89").Tag = "Vaffanculo"
MsgBox Controls("Command89").Tag
 
' Elimina il Tag di Command89
Controls("Command89").Tag = vbNullString
 
' Se il Tag di command89 è vbNullString... lo rende invisibile
If Controls("Command89").Tag = vbNullString Then
    Controls("Command89").Visible = False
End If
 
End Sub
===============================
 
Il For Each lo puoi usare per la majonese.
 
Bruno


grazie a tutti