Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Evento Activate

47 views
Skip to first unread message

franco...@gmail.com

unread,
May 28, 2019, 4:03:46 PM5/28/19
to
Salve a tutti,
come da oggetto, ho un problema sull'evento Activate di una maschera.
Ho la necessità di effettuare alcune operazioni quando una maschera ottiene lo stato attivo.
Questo succede all'apertura della maschera, quando ci torno alla chiusura di un'altra maschera; purtroppo non scatta l'evento alla chiusura di una maschera popup a scelta obbligata.
Dalla maschera apro una popup nella quale l'utente effettua alcune scelte (da un elenco a discesa), quindi chiude la popup. Io mi sarei aspettato l'evento Activate della maschera "chiamante" ed invece non succede. E' normale così o sbaglio qualcosa?
A completezza dell'informazione la maschera chiamante contiene una sottomaschera che dev'essere popolata dalle scelte effettuate dall'utente nella popup (vengono inseriti i record scelti). Alla chiusura della popup i record selezionati non vengono visualizzati, anche se sono stati correttamente inseriti nella tabella sottostante (li aggiungo usando Addnew e Update sull'oggetto Recordset).
In pratica mi serve un refresh della videata, che io pensavo di eseguire su Activate della maschera principale, ma l'evento non si verifica. Se poi mi sposto sul record precedente e torno al record iniziale i dati inseriti ci sono.
Uso Access 2013 con Windows 10.
Grazie
Franco

BFS

unread,
May 29, 2019, 1:40:12 AM5/29/19
to
non puoi mettere il refresh dopo l'istruzione che apre la popup?
il codice in della maschera principale si interrompe finche non chiudi
la popup

Immagino tu abbia un pulsante che richiama la popup per fare le scelte

in quel pulsante:

...
docmd.openform "tuamascheraPOPup"
'qui il codice si blocca finche non chiudi il popup
me.sottomaschera.requery
...

BFS

@Alex

unread,
May 29, 2019, 1:58:15 AM5/29/19
to
Apri la maschera di cui parli in modalità acDialog, in quel modo l'azione diventa SINCRONA e, quando la chiudi il codice torna alla Routine chiamante che quindi è sincronizzata.

DoCmd.OpenForm "NomeForm", , , , , acDialog
Me.NomeSubForm.Form.Requery

Se poi devi accedere alla Form Popup per recuperarne dei dati c'è un metodo abbastanza banale...

Questo il codice lato Maschera chiamante:
If CurrentProject.AllForms("NomeForm").IsLoaded Then
' Quì accedi alla Form es:
NomeVariabile = Forms("NomeForm")!NomeControllo.Value
DoCmd.Close acForm, "NomeForm"
End If

Mentre lato Maschera Chiamata:
Private Sub Form_Unload(Cancel As Integer)
Cancel = Me.Visible
Me.Visible = False
End Sub

In questo modo la Form chiamata, diventa NON VISIBILE ma rimane aperta, quindi puoi accedervi, e poi la chiudi.

Vedi tu...

@Alex

franco...@gmail.com

unread,
May 29, 2019, 3:24:34 AM5/29/19
to
Grazie a tutti,
ho risolto inserendo il requery nell'evento Unload della popup:

Forms!MasUtenti.SotUtentiReparti.Form.Requery

Saluti
Franco

@Alex

unread,
May 29, 2019, 3:40:48 AM5/29/19
to
Ovviamente funziona... tecnicamente condizioni un oggetto ad un'altro inutilmente...
Se per esempio quella Form dovesse essere richiamabile da altre Form...?
Capisco che magari non sia il tuo caso, ma la logica tecnica funzionale dovrebbe essere la guida e di fatto non cambia...!

Si dovrebbe evitare di fare effetto PANSPERMIA di codice.

Vedi tu...

@Alex
0 new messages