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

Sottomaschera che non si aggiorna.

220 views
Skip to first unread message

Reventlov

unread,
Jan 4, 2012, 4:54:43 PM1/4/12
to
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)
--

Reventlov

unread,
Jan 4, 2012, 5:54:55 PM1/4/12
to
Il giorno Wed, 04 Jan 2012 21:54:43 GMT, no...@no.void (Reventlov) ha scritto:
>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.

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.

Bruno Campanini

unread,
Jan 5, 2012, 4:49:55 AM1/5/12
to
Reventlov used his keyboard to write :
> Il giorno Wed, 04 Jan 2012 21:54:43 GMT, no...@no.void (Reventlov) ha
> scritto:
>> 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.
>
> 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

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


Reventlov

unread,
Jan 5, 2012, 5:27:33 PM1/5/12
to
Il giorno Thu, 05 Jan 2012 10:49:55 +0100, Bruno Campanini <brun...@libero.it> ha
scritto:

>Reventlov used his keyboard to write :
>> Il giorno Wed, 04 Jan 2012 21:54:43 GMT, no...@no.void (Reventlov) ha
>> scritto:
>>> 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.
>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.

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
0 new messages