Newsgroup: it.comp.appl.access
Titolo: Setfocus su sottomaschera

Ho una maschera con sottomaschera, le cui origini record sono 2 tabelle
legate da una relazione uno a molti. Ovviamente uno va con la maschera
principale e molti con la sub.
Io vorrei ke prima di salvare un nuovo record nella form principale, si
verificasse ke nella sub sia stato immesso almeno un record quindi ho
messo nella form principale:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'calcolo se ho aggiunto records alla sub
'se la risp è no allora fa questo codice:
        Cancel = True
        Me.nome_controllo_sub_form.SetFocus
Me.nome_controllo_sub_form.Form.nome_controllo_nella_sub.SetFocus
End Sub
ma ottengo un errore ke mi dice ke è impossibile passare il focus a
nome_controllo_sub_form
Dove sta l'errore?

 ha scritto nel messaggio 
news:1162231833.8...@k70g2000cwa.googlegroups.com...


Me.nome_controllo_sub_form.Form.nome_controllo_nella_sub.SetFocus
End Sub

prima devi passare il focus alla sottomaschera e poi al controllo
me.nomesottomaschera.setfocus
me.nomecontrollo.setfocus
Ciao piccottosiculo
inserisci nella maschera principale una casella di testo, TxtNascosta, che 
fa riferimento ad un controllo della sottomaschera.
e nell'origine controllo:
=smNomeSottomaschera.Form!NomeControllosottomaschera
nella maschera principale su evento: prima di aggiornare
If IsNull(Me.TxtNascosta) Then
    MsgBox "mancano dati nella sottomaschera",
    Cancel = True
    Me.Nomesottomaschera.SetFocus
    Exit Sub
End If
Daniele 

 Daniele
ma ke cambia ripetto a quello ke ho fatto io? Anzi mi pare ke hai fatto
il focus diretto alla sottomaschera ma nn al controllo....

 
Passalo prima sul subform e poi sul controllo (due setfocus per intenderci)
--
ac

credo di avere capito il problema:
Ipotizziamo di aver modificato (o aggiunto) un record nella maschera
principale. Visto ke questa è collegata alla sub da una relazione
uno-a molti, se si tenta di accedere alla maschera secondaria (con il
metodo set focus) collegata alla prima per immettere ulteriori dati, si
ottiene l'errore sulla cancellazione dell'evento before update della
maschera principale, perkè access deve prima salvare il record della
maschera principale. Se non lo salva (cancel=true) nn puo accedere al
record della maschera secondaria ke è direttamente collegato a quello
della maschera principale.
Il problema era quindi di natura concettuale e non di forma.
riferimenti:
ACC: Main Form Record Edits Saved When Subform Gets Focus
http://support.microsoft.com/kb/132033/en-us

 integrita' ho qualche dubbio sulla logica della cosa.
avevi ragione...mentre tu scrivevi la tua risposta io scrivevo la mia
;-)

 ha scritto nel messaggio 
news:1162234450....@m73g2000cwd.googlegroups.com...

quello se vuoi lo aggiungi :)
non so quello che vuoi fare.....
ma al momento che passi il focus alla sottomaschera
il record della maschera principale è già inserito in tabella.
a questo punto devi:
impedire il passaggio a nuovo record;
testare se nella sottomaschera c'è almeno un record, altrimenti esci e 
cancelli il record della maschera principale. qualcosa di simile a questo, 
cambiando i nomi:
If IsNull(Me.TxtNascosta) Then
    If MsgBox("Vuoi chiudere la Fattura, senza i particolari?", vbYesNo) = 
vbYes Then
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE tblFattureAcquisti.IDFatturaAcquisti  FROM 
tblFattureAcquisti  WHERE 
(((tblFattureAcquisti.IDFatturaAcquisti)=Forms!mFatturaAcquisto![IDFatturaAcquisti])); 
", 0
    DoCmd.SetWarnings True
        Exit Sub
    Else
        Cancel = True
   End If
Daniele