Newsgroup: it.comp.appl.access
Titolo: Impedire inserimento in sottomaschera

Ho 2 form: frmPrincipale e frmSottomaschera collegate con relazione 1
a molti.
Devo evitare che l'utente cominci ad inserire i dati dalla
sottomaschera quando non ci sono dati nella frmPrincipale per evitare
che non vi sia in seguito in tabella il collegamento con i codici!
Ho messo questo codice sull'evento Prima di Inserire della
frmSottomaschera ma non riesco ad evitare di creare il record. Mi dite
il comando in VBA corretto per favore?
Private Sub Form_BeforeInsert(Cancel As Integer)
If IsNull(Forms!frmPrincipale!idUtente) = True Then
MsgBox ("aggiungere prima un nuovo utente nella Form Principale")
Me.Undo 'Probabilmente questo comando non è corretto
Exit Sub
Else
End If
End Sub
In alternativa mi dite per favore il codice per modificare via codice
la proprietà Abilitato di una form?
in modo da abilitarla solo se esiste un Id nella maschera superiore!
Grazie dell'aiuto!!


Ciao
Quando mi è capitato ho fatto così:
Sull' evento corrente della maschera, se il campo chiave (es. numero
fattura) della maschera è vuoto la sottomaschera è invisibile
altrimenti è visibile.
Su nuovo record la sottomaschera è invisibile, compilato il campo
chiave, salvo il record e rendo visibile la sottomaschera.
Mi sono spiegato decentemente ?
Ciao
Alberto


Ciao Alberto, scusa per il ritardo ma ho avuto dei problemi con il mio
pc in questi giorni.
Sono riuscito a provare la tua soluzione che mi andrebbe benissimo ma
la cosa che non riesco a fare è aggiornare il campo chiave per
sbloccare la sottomaschera.
Ti spiego meglio, ho in sostanza inserito sull'evento Corrente della
frmAnagrafico:
If IsNull(Me!idUtente) = True Then
Forms!frmAnagrafico!frmSchedaColloquio.Enabled = False
Else
Forms!frmAnagrafico!frmSchedaColloquio.Enabled = True
End If
ma quando inserisco un nuovo utente e vedo effettivamente il valore
numerico dell'id non riesco però ad inserire i dati nella
sottomaschera....devo per forza avanzare o retrocedere il record e
riposizionarmi successivamente, per salvarlo.
Come posso modificare il codice?


Ciao,
salva il record all'uscita dal campo IdUtente:
if me.newrecord=true and not isnull(me!idutente) then
docmd.runcommand accmdsaverecord)
Forms!frmAnagrafico!frmSchedaColloquio.Enabled = True
end if
Prova così e fammi sapere.
Ciao.
Alberto


Ciao Alberto ho provato così ma non funziona.
Questo perchè ovviamente il campo idutente viene generato
automaticamente quando inserisco un dato nella form, ma non mi ci
posiziono e quindi non ottengo molto inserendo eventi su quel campo.
In sostanza non ho un campo che viene compilato sicuramente al 100%, o
meglio può capitare che l'operatore non lo compili, di conseguenza
usando questo metodo non ho la certezza che la sottomaschera si
sblocchi neanche inserendo quella routine che mi suggerivi, ad esempio
in un campo che quasi sicuramente verrà compilato come il campo sesso
(m/f).
Devo trovare una soluzione per far aggiornare la maschera con il
docmd.runcommand accmdsaverecord.
Qualche altra idea?
Non pensavo mi togliesse cosi tanto tempo una cosa cosi, ma è un
prodotto che devo distribuire e non posso fare errori.
Grazie


Ciao,
poresti salvare sull'evento gotfocus della prima casella dove ti
posizioni alla creazione di un nuovo record ?
Fammi sapere.
Alberto