Newsgroup: it.comp.appl.access
Titolo: Blocca Sottomaschera

Buongiorno.
Utilizzo A00 su W98 SR2.
Ho una maschera Ordini che contiene una sottomaschera DettaglioOrdini.
Vorrei che se il campo flag "Chiuso" è su 1, tutti i campi fossero bloccati.
Ho scritto il seguente codice, che funziona solo per la maschera, e che NON
blocca la sottomaschera. Se tolgo l'apice alla riga della sottomaschera, mi
viene restituito l' errore 2450 "impossibile trovare la sottomaschera...."
Private Sub Form_Current()
'
With CodeContextObject
    If .chiuso = "-1" Then
       .AllowEdits = False
       .CMDSbloccaDDT.Visible = True
       '    Forms![FrmSmTblRDDT].AllowEdits = False
    Else
       .AllowEdits = True
       .CMDSbloccaDDT.Visible = False
       '    Forms![FrmSmTblRDDT].AllowEdits = True
    End If
End With
'
End Sub
In generale, il sistema che ho utilizzato per bloccare la maschera è
appropriato o c'è di meglio?
Come fare per bloccare anche la sottomaschera?
Grazie
Gianluigi Agostini

 ha scritto nel messaggio
news:%kg77.6122$Pb6....@news1.tin.it...

Hai provato a sostituire le due righe di codice in questione con:
Forms![NomeMascheraPrincipale]![FrmSmTblRDDT].AllowEdits = True
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Roberto
Sě; Access mi morde dicendomi che il campo 'FrmSmTblRDDT' a cui si fa
riferimento nell'espressione (Errore 2465).
Ti riscrivo il codice che utilizzo, e che non va sulle righe della
sottomaschera.
Private Sub Form_Current()
With CodeContextObject
    If .chiuso = "-1" Then
       .AllowEdits = False
       .CMDSbloccaDDT.Visible = True
       Forms![FrmDDT]![FrmSmTblRDDT].AllowEdits = False
       Forms![FrmDDT]![FrmSmTblRDDT].AllowAdditions = False
    Else
       .AllowEdits = True
       .CMDSbloccaDDT.Visible = False
       Forms![FrmDDT]![FrmSmTblRDDT].AllowEdits = True
       Forms![FrmDDT]![FrmSmTblRDDT].AllowAdditions = True
    End If
End With
End Sub
In generale comunque non ho ancora capito la sintassi di come fare
riferimento alla sottomaschera e ai suoi controlli da un evento generato
nella maschera. In questo caso ho anche provato a far eseguire il codice
anche dall'evento current della sottomaschera. Quando carica la maschera
principale, anche la sottomaschera si blocca se il flag č a -1; poi perň
sfogliando i record, sembra che l'evento current della maschera non abbia
effetto su quello della sottomaschera, e la sincronizzazione dello stato di
blocco dei record si perde.....
Ancora grazie, per il precedente ed il nuovo aiuto...
Gianluigi Agostini


Nel far riferimento, dalla maschera principale, ad una sottomaschera o ad un
controllo in essa contenuto, non occorre far riferimento al nome della
sottomaschera bensì al nome del controllo sottomaschera della maschera
principale che contiene la sottomaschera.
Quindi, se la maschera principale si chiama Paperino e contiene un controllo
sottomaschera chiamato Pippo, che contiene una sottomaschera chiamata Pluto,
che a sua volta contiene un controllo chiamato Topolino, per far riferimento
dalla maschera Paperino al controllo Topolino non devi scrivere:
[Forms]![Paperino]![Pluto]![Topolino]
bensì
[Forms]![Paperino]![Pippo]![Topolino]
o ancora meglio
Me![Pippo]![Topolino]
Se poi, dalla maschera principale, devi fare riferimento ad una proprietà
della sottomaschera Pluto (come nel tuo caso) non devi scrivere :
[Forms]![Paperino]![Pluto].AllowEdits
bensì
[Forms]![Paperino]![Pippo].Form.AllowEdits
o ancora meglio
Me![Pippo].Form.AllowEdits
Usando poi l'autocomposizione per inserire nella maschera principale il
controllo sottomaschera, normalmente il controllo sottomaschera e la
sottomaschera hanno lo stesso nome, ciò non toglie che la regola è quella
scritta qui sopra.
Se il nome del controllo sottomaschera (non della sottomaschera) contenuto
nella maschera FrmDDT si chiama FrmSmTblRDDT, la sintassi corretta dovrebbe
essere:
Me![FrmSmTblRDDT].Form.AllowEdits = False
Me![FrmSmTblRDDT].Form.AllowAdditions = False
Naturalmente, se il controllo sottomaschera  contenuto nella maschera FrmDDT
non si chiama FrmSmTblRDDT, tra parentesi quadre scrivi il vero nome di
questo controllo.


 Roberto
Perfetto!
Grazie
Gianluigi Agostini