Newsgroup: it.comp.appl.access
Titolo: Forms!mascheraNome!corpo.enabled = false -> si può fare

Ciao a tutto l'ng,
ho una maschera (la solita) con due caselle combinate. Le caselle sono
cbocliente e cbodata.
Vorrei ottenere il blocco del corpo maschera, ossia che l'utente possa
solo visualizzare i record ma non modificarli se la data in cbodata è
diversa da oggi.l
evento dopo aggiornamento cbocliente
me!cbodata = me!cbodata.itemdata(0)
if me!cbodata = date then
 forms!msc_cstmp!corpo.enabled = true
 forms!msc_cstmp!corpo.locked = false
però non funziona.
la sintassi forms!msc_cstmp!corpo.enabled
il punto è che in un'altra maschera il codice forms!msc_cstmp!
corpo.visible = false va alla grande, con visible,
con enabled o locked si può fare?
oppure devo indicare campo x campo?
Grassssssie,
Samantha

 però non funziona.
Perche' non imposti invece la proprieta' AllowEdits della maschera?
(Peraltro, questo lascia la possibilità di inserire nuovi record)
In alternativa, puoi intercettare l'evento beforeupdate della maschera
e bloccarlo se la data non va bene.
cia'
Max

 e bloccarlo se la data non va bene.
Quindi potrei dirgli una cosa di questo tipo
if me!cbodata = date then
      With me
              .AllowEdits = True
        End With
  else
       With me
              .AllowEdits = false
        End With
Allora il codice qui sopra postato funziona, soltanto che mi blocca
anche le caselle combinate cbocliente e cbodata... come devo fare  x
sbloccare queste due?
Oppure anzichè scrivere me.allowedits -> ossia le modifiche alla
maschera
esiste un me.corpo.allowedits ?????  -> ossia le modifiche al corpo
maschera (xchè le due caselle combinate sono su intestazione
maschera)
Perchè io avrei provato così, ma mi da un erore di runtime 2164
"Impossibile disattivare il controllo che ha correntemente lo stato
attivo.
If Me!cbodata = Date Then
            'se la data di listino è =date ossia oggi, allora campo
costo e percentuale sono attivi
            Me.costodilistino.Enabled = True
            Me.costodilistino.Locked = False
            Me.percdilistino.Enabled = True
            Me.percdilistino.Locked = False
Grazie 100000
Samantha

 ha scritto nel messaggio 
news:229e6b36-ef6e-4d99...@y43g2000hsy.googlegroups.com...



evento dopo aggiornamento cbocliente

però non funziona.



Grassssssie,
Samantha
Ma il campo è nel corpo?
Ma vuoi bloccare il corpo della maschera o corpo è un campo della maschera?
Il corpo della maschera non si può bloccare, mentre per i campi fai un ciclo 
sui controlli.
Dim ctl As Control
If Me.Testo.value = Date Then
    For Each ctl In Me.Controls
        If ctl.ControlType = acTextBox Then ctl.Enabled = False
    Next
Else
    For Each ctl In Me.Controls
        If ctl.ControlType = acTextBox Then ctl.Enabled = True
    Next
End If
Naturalmente avendo premura di escludere il controllo attivo se non non 
funziona vedi tu se con Tag o nominalmente
Ciao
-- 
Roberto da Parma


Invece di bloccare la maschera potresti inserire un tag nei controlli che 
vuoi rendere di sola lettura e ciclare solo quelli;
ad esempio inserisci nei controlli che vuoi bloccare il tag "dabloccare" e 
fai una cosa di questo genere:
In evento dopo aggiornamento cbocliente inserisci:
dim ctl as control
for each ctl in controls
if ctl.tag = "dabloccare" then
if cbocliente <> date then
   ctl.locked = true
else
   ctl.locked = false
end if
end if
next ctl
-- 
Ciao
Geppo 

 Roberto da Parma
Grazie,
Samantha


Questo funziona, ma devi essere sicura che uno dei due controlli non
sia attivo, quindi prima di bloccarli sposta lo stato attivo da
qualche altra parte:
Me.NomeDiUnAltroControllo.setfocus
cia'
Max

 wrote:
Roccia Max: grazie! Funziona alla grande
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me!mp_desc.SetFocus
 If Me!cbodata = Date Then
             'se la data di listino è =date ossia oggi, allora campo
costo e percentuale sono attivi
             Me.costodilistino.Enabled = True
             Me.costodilistino.Locked = False
             Me.percdilistino.Enabled = True
             Me.percdilistino.Locked = False
    Else
             Me.costodilistino.Enabled = False
             Me.costodilistino.Locked = True
             Me.percdilistino.Enabled = False
             Me.percdilistino.Locked = True
 End If
End Sub
Grazie a tutti x il supporto e le
dritte!!!!    :D     :D       :D    :D :D
Samantha

 wrote:
Ops... sai cosa... che non va quando la maschera viene aperta. mi
spiego con la successione degli eventi:
1) Apertura maschera
2) Selezione cliente -> automaticamente cbodata.itemdata(0)
3) Vengono visualizzati i record
4) Il campo costo e percentuale sono modificabili
5) Seleziono di nuovo il cliente, oppure una data diversa
6) Carica i nuovi dati
7) Il campo costo e percentuale non sono modificabili
Praticamente, dopo l'apertura, e prima della prima presentazione dei
dati, l'evento before update non ha efficacia.
Significa che devo inserire quel codice su un evento diverso da before
update, forse su onload=caricamento?
Ho provato, ma mi da un errore di runtime '2105' e dice "Impossibile
passare al record specificato"
Devo trovare l'evento giusto...

 Devo trovare l'evento giusto...
ok,
l'evento giusto è ON CURRENT!!!
:)
Samantha

 Roberto da Parma
Grazie,
Samantha
Prego
-- 
Roberto da Parma



Ciao Roberto,
tu e Geppo mi parlate di TAG.... ma non so che cosa sono... sono alle
prime armi... Potresti farmi eventualmente un esempio?
Grazie ;) Samantha

 Grazie ;) Samantha
Miiiii che ignorante che sono....
Proprietà TAG -> C'è ANCHE sull'help...
Proprietà Tag
Vedere ancheSi applica aEsempioInformazioni specificheRestituisce o
imposta le informazioni relative al controllo barra dei comandi, quali
i dati che è possibile utilizzare come argomenti per le routine o che
identificano il controllo. Valore String di lettura/scrittura.
espressione.Tag
espressione      Obbligatoria. Un'espressione che restituisce uno
degli oggetti presenti nell'elenco Si applica a.
bo. è la prima volta che la vedo, farò una ricerca sull'ng x vedere
chi l'ha usata e come, questo TAG!!!


Il tag identifica un controllo pertanto puoi usarlo per fare riferimento ad 
esempio a cinque controlli su dieci anche se sono dello stesso tipo.
la proprietà si puo' impostare in questo modo:
tasto destro del mouse sul controllo>proprietà>scheda Altro>l'ultima voce è 
TAG
qui scrivi ad esempio "dabloccare" ed il codice che ti postato rifletterà le 
impostazioni solo su quei controlli che hanno impostato il tag "dabloccare"
Se hai piu' controlli a cui impostare lo stesso TAG allora puoi selezionarli 
tutti ed impostarlo solo una volta.
-- 
Ciao
Geppo 

 Geppo
Ahnnnnnnnnnnnnnnnnnnnnnnn nnn
Ora ho capito!!!!  :D
Grazie x la spiegazione!!!
Al momento con il codice impostato su ON CURRENT funziona tutto alla
grande, come volevo, ma sicuramente mi tornerà utile in altre
situazioni!!!
:D Grazie,
Samantha