Newsgroup: it.comp.appl.access
Titolo: Sottomaschera che non si aggiorna.

Ciao,
Nel menu dell'applicazione che sto cercando di fare ho una sottomaschera che raggruppa le
pratiche per addetto.
Dice che Giovanni ha in carico 3 pratiche e Mauro ne ha 2.
Cliccando sul numero 3 apro una maschera con le sole pratiche di Giovanni.
Apro una pratica di Giovanni e cambio l'assegnazione in Mauro.
Chiudo la pratica e correttamente viene aggiornato l'elenco delle pratiche di Giovanni.
Nel senso che la pratica assegnata a Giovanni diventa di Mauro e rimane nell'elenco.
Chiudo anche l'elenco e vedo che la sottomaschera iniziale non viene aggiornata.
Continua a dire che Giovanni ha in carico 3 pratiche e Mauro 2, mentre dovrebbe essere 2 e
3.
Nella maschera Menu (che contiene la sottomaschera) ho provato a mettere un me.refresh
quando prende il focus. Ma non cambia niente. Ho provato anche recalc e requery.
Ho provato anche a metterli nella sottomaschera, anche se non ho capito se una
sottomaschera prende il focus.
Per avere l'aggiornamento devo chiudere il Menu e riaprirlo. La query funziona, ma solo
all'apertura.
La sottomaschera è dynaset (non snapshot). Ho cambiato alcune proprietà perchè non volevo
che i dati fossero modificabili dalla sottomaschera. Ho tolto i selettori di record ed i
pulsanti di spostamento. Ho rimesso a "Sì" i consenti filtri, modifiche, eliminazioni,
aggiunte. Ma continua a non aggiornarsi.
Cosa sbaglio?
Come posso forzare il ricalcolo/refresh/requery della sottomaschera?
Grazie.
Giovanni
 
 
-- 
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati
 (Esempi e programmi in VbScript)
-- 

all'apertura.
 
Ho provato a mettere  nel menu
Private Sub Form_AfterInsert()
    MsgBox "afterinsert"
        Me![Pratiche per dipendente].Form.Requery
End Sub
 
ma l'evento non viene neppure innescato.
 
Ho provato anche nel form Pratiche a mettere
Private Sub Dipendente_Change()
    MsgBox "dipendente_change"
    Forms("Menu").Forms("Pratiche per dipendente").Requery
End Sub
 
Qui l'evento viene innescato, ma ho un errore perchè non riconosce l'oggetto "pratiche per
dipendente", che è la sottomaschera.
Usando Forms("Menu").[Pratiche per dipendente].Requery
non ho errori ma continua a non funzionare.


     Forms("Menu").Forms("Pratiche per dipendente").Requery
 
Prova a sostituire così:
 Forms("Menu").[Pratiche per dipendente].Form.Requery
 
È probabile che ulteriori problemi li avrai in seguito per quegli spazi 
nel nome della subform.
 
Bruno
 
 

nel nome della subform.
 
Grazie.
Le prime prove le facevo con i nomi del tipo "frmPratiche" ma poi mi infastidiva che
apparissero nel titolo della finestra. Nelle sottomaschere eviter� nomi lunghi con spazi,
anche per praticit� nel chiamarne i metodi.
 
Nei tentativi che ho fatto c'era un errore. Finch� non esco dalla maschera il record non
viene aggiornato e quindi non accade nulla anche forzando il refresh della sottomaschera.
 
Cos� come � sotto funziona, anche se ero partito dalla convinzione che la sottomaschera si
dovesse aggiornare automaticamente. In effetti anche le altre query non si ricalcolano.
L'unico automatismo � nell'aggiornamento dei dati, non delle query.
Sto entrando un po' nelle logiche di funzionamento di Access. Un po' meno nella sintassi,
perch� [Menu].[Pratiche per dipendente]... mi pare che restituisse un errore.
 
Private Sub Dipendente_Change()
    'Se viene modificato il dipendente a cui viene assegnata la pratica
    'allora aggiorna il record e poi forza l'aggiornamento della sottomaschera.
    Me.Refresh
    Forms("Menu").[Pratiche per dipendente].Form.Requery
End Sub
