Newsgroup: it.comp.appl.access
Titolo: Campo data e controllo locked

Buonasera a tutti,
mi ritrovo una maschera che mi fa degli scherzi un po' strani, ma probabilmente
sono io che, come al solito, faccio danni.
Ho un controllo data, che si chiama Data_Emissione.
La proprietà "bloccato" è impostata a sì, perché il controllo deve poter essere
modificate solo se determinate condizioni si realizzano, in pratica sull'evento
after update di un altro controllo io ho
Me!Data_Emissione.Locked = False
Sulla stessa maschera ho altri 3 controlli, costruiti nello stesso modo e
funzionano tutti. Quello legato alla data no, anzi, a volte funziona e a volte
no. Per spostarmi sul controllo incriminato uso tab, invio e mouse, la
situazione non cambia.
E' normale?
Sto usando access 2003, ma il db è in formato 2K per esigenze di compatibilità
in ufficio.. 
Non è un gran problema, ma vorrei capire se è un mio errore oppure è normale che
si comporti così.
Grazie
Erika

 troverai il motivo.
L'ho già fatto, per tutto il pomeriggio di ieri, ma le righe di codice
non sono tante... a volte apro la maschera, inserisco il dato nel
controllo precedente e il campo data si sblocca, a volte non si
sblocca.
Lo stesso codice è usato per altri tre controlli e funziona
perfettamente. Bah.
Ciao
Erika

 troverai il motivo.
L'ho già fatto, per tutto il pomeriggio di ieri, ma le righe di codice
non sono tante... a volte apro la maschera, inserisco il dato nel
controllo precedente e il campo data si sblocca, a volte non si
sblocca.
Lo stesso codice è usato per altri tre controlli e funziona
perfettamente. Bah.
Ciao
Se vuoi posta il codice e vediamo.
Morgan
Erika

 Se vuoi posta il codice e vediamo..
La maschera ha diversi controlli, tra cui:
Revisione (casella combinata) - locked di default
Data_Emissione (data) - locked di default
Status (casella combinata) - locked di default
Queste sono le sequenze di codice incriminato (usato per gli altri
controlli funziona perfettamente)
------------
Private Sub Revisione_AfterUpdate()
'Se tutto va bene blocco il controllo corrente e sblocco il successivo.
Me!Revisione.Locked = True
Me!Data_Emissione.Locked = False
End Sub
-------------
Private Sub Data_Emissione_AfterUpdate()
'Se tutto va bene blocco il controllo corrente e sblocco il successivo.
Me!Status.Locked = False
Me!Data_Emissione.Locked = True
End Sub
-------------------
Mi sembra abbastanza lineare... Posso inserire la data solo dopo che ho
inserito la revisione e lo status solo dopo che ho inserito la data...
altrimenti non posso toccare nessuno dei 3 (in caso di emergenza
sblocco con un dblclick, che funziona perfettamente).
Ciao
Erika

 Se vuoi posta il codice e vediamo..
La maschera ha diversi controlli, tra cui:
Revisione (casella combinata) - locked di default
Data_Emissione (data) - locked di default
Status (casella combinata) - locked di default
Queste sono le sequenze di codice incriminato (usato per gli altri
controlli funziona perfettamente)
------------
Private Sub Revisione_AfterUpdate()
'Se tutto va bene blocco il controllo corrente e sblocco il successivo.
Me!Revisione.Locked = True
Me!Data_Emissione.Locked = False
End Sub
-------------
Private Sub Data_Emissione_AfterUpdate()
'Se tutto va bene blocco il controllo corrente e sblocco il successivo.
Me!Status.Locked = False
Me!Data_Emissione.Locked = True
End Sub
-------------------
Mi sembra abbastanza lineare...
[CUT]
Invece a me sembra una vera e propria trappola.
Private Sub Data_Emissione_AfterUpdate()
'Se tutto va bene blocco il controllo corrente e sblocco il successivo.
Me!Status.Locked = False
Vorrai dire sblocco il controllo seguente......
Per esperienza questi giochini sono sempre piuttosto insidiosi.
"Posso inserire la data solo dopo che ho
inserito la revisione e lo status solo dopo che ho inserito la data"
Che tradotto vuol dire che la tua regola è
Revisione , Data , Stato.......rifletti su questo....If....The...ma anche
Select Case
Scriviti almeno un ciclo di controllo per sicurezza tipo
Private Sub Revisione_AfterUpdate()
'Se tutto va bene blocco il controllo corrente e sblocco il successivo.
'Ma prima per sicurezza mi controllo lo stato dei controlli........
If Me.Revisione.Locked = False Then
     Me.Revisione.Locked = True
Else
 MsgBox "Il controllo Revisione è già bloccato,controllare la causa"
End If
...............etc etc
Morgan
Ciao
Erika

 Select Case
Infatti, la sequenza è questa.
E ho trovato l'errore, che non era nel codice, ma a monte, nel senso
che - per qualche motivo a me ignoto - nel corso delle varie revisioni,
l'evento after update si era perso x strada.
Adesso l'ho risistemato e funziona perfettamente.
Ciao e grazie per l'aiuto!
Erika