Newsgroup: it.comp.appl.access
Titolo: Aggiornamento maschera aperta

Ciao a tutti,
 
il mio problema di oggi è il seguente:
 
ho una maschera continua che si chiama BefRicevuteAC con nell'origine dati una query di raggruppamento che non si può modificare. 
All'interno di questa maschera ho un campo che si chiama Controllo Sì/No che quindi non posso aggiornare.
Per farlo (cliccando due volte sull'Id del record che si chiama IdBef) apro in un'altra maschera il singolo record, fleggo il campo Controllo e su chiusura ho inserito il seguente codice che dovrebbe in teoria andare ad aggiornare i dati presenti nella maschera aperta BefRicevuteAC
 
    If CurrentProject.AllForms("BefRicevuteAC").IsLoaded = True Then
    Form![BefRicevuteAC]!IdBef.Requery
    Form![BefRicevuteAC]!Controllo.Requery
    End If
 
Però quando ritorno nella maschera BefRicevuteAC non vedo nessun aggiornamento finchè non uso F5 (Aggiorna).
 
Dove sto sbagliando? Vorrei che funzionasse senza cliccare su Aggiorna...
 
Qualcuno riesce ad illuminarmi?
 
Grazie mille in anticipo

Se non apri la maschera in modalità acDialog è ovvio tu non veda nulla...
 
@Alex

 @Alex
 
Ciao Alex,
grazie mille per il tuo intervento.
Devo dirti però che non ho mai utilizzato acDialog per aggiornare maschere aperte e in altri casi ha sempre funzionato, nelle altre occasioni però le maschere non erano come questa derivanti da query incrociate.
E comunque ho provato e non aggiorna comunque...
Hai un'altra idea?
Ti ringrazio per la pazienza che riponi a chi, purtroppo, non conosce access come te...

Il metodo che hai proposto non può funzionare in nessun caso..., quindi fatico a capire come tu possa averlo usato con successo.
Il motivo che intende impossibile è che l'apertura della maschera di Editing avviene in modo ASINCRONO, quindi quel.codice viene eseguito appena aperta la maschera e sincero non sono ancora state eseguite le modifiche...
Quindi il requery viene eseguito ma inutilmente ai fine del reale funzionamento.
 
Quindi usando acDialog contrariamente l'apertura della maschera è SINCRONA ed il codice di requery non viene eseguito fintanto che la form non viene chiusa, o diventa non visibile.
 
Puoi verificare questo mettendo un breakpoint e testando l'effettivo stop del codice.
 
Detto questo il fatto sia una query a campi incrociati o raggruppata, entrambe non editabili, non cambia nulla nel contesto... 
 
Tuttavia il motivo per cui non funziona è che tu esegui il requery se la form è aperta... ma questo va bene se nella form hai attivo il.codice che la rende non visibile... mentre se la chiudi devi semplicemente togliere il controllo isloaded che non serve ed eseguire direttamente il Requery.
 
@Alex


Non capisco,
io il codice lo inserisco in chiusura della maschera dove faccio le modifiche, non sull'apertura.
Quindi provo a spiegare meglio il mio procedimento: ho una maschera continua
IdBef  Data      Numero Controllo
1     01/01/2020 123      no
2     02/01/2020 456      no
ecc...
cliccando due volte su IdBef= 1 per esempio faccio in modo che mi apra la maschera Bef 1 con tutti i suoi dati dentro. Faccio la modifica che mi serve (in questo caso Controllo = yes) e chiudo. In chiusura gli dico di fare il requery solo se vede che la maschera BefRicevuteAC è aperta, altrimenti non deve fare nessun requery... Mi ha sempre funzionato per altre occasioni di uso... e se non applicavo questo metodo non faceva nessun requery...
Come posso quindi simulare il tasto F5 alla chiusura della maschera Bef per aggiornare la maschera BefRicevuteAC...?
Grazie per la tua pazienza...
 

Devi fare questo:
 
    DoCmd.OpenForm "Bef 1", , , , , acDialog
    Form![BefRicevuteAC]!IdBef.Requery
    Form![BefRicevuteAC]!Controllo.Requery
 
 
Saluti
@Alex


Chiedo venia...
Ho scoperto l'errore...
Non mettevo il codice in chiusura maschera Bef ma in un tasto che mi faceva una serie di operazioni.
Ora funziona
Grazie mille comunque per il tuo intervento!

Qualche cosa che non quadra c'è... ma se funziona...
 
@Alex