Aggiornare valori in una sottomaschera in tempo reale

di il
6 risposte

Aggiornare valori in una sottomaschera in tempo reale

Tabella contabilita --> campi entrata ; uscita
query "saldo query" --> somma di entrata ; somma di uscita
maschera prima_nota --> controlli campo entrata ; uscita ; altri dati, Sottomaschera con "somma di entrata" somma di uscita" (presi dalla query) e saldo calcolato da "somma entrata - somma uscita della query.
quando apro la maschera prima nota, i valori nella sottomaschera sono giusti , ma se inserisco nel record attuale della maschera un'entrata o un uscita i valori della sottomaschera non si aggiornano neanche se passo ad un nuovo record, ma si aggiornano solo se chiudo e riapro la maschera.
c'è un modo per poter aggiornare in tempo reale i valori nella sottomaschera/query visualizzata nella maschera nel momento che inserisco un valore nel campo entrata e/o uscita?
spero di avermi spiegato
(problema scaturito e derivato da un post precedente)
grazie

6 Risposte

  • Re: Aggiornare valori in una sottomaschera in tempo reale

    Cambiando Record viene generato un Refresh che non include il ricaricamento del Recordset di conseguenza il contenuto è quello dell'apertura e non può farti vedere nè i NUOVI, ma nemmeno l'aggiornamento di eventuali CANCELLAZIONI(quì in realtà avviene una cosa strana a livello visivo).
    Quindi per ottenere una corretta sincronizzazione e visualizzazione, devi forzare il ricaricamento dell'Origine Record della Maschera di cui parli(non quella in cui inserisci che ovviamente si aggiorna da sola, ma quella dipendente che non sa che deve farlo)...

    L'istruzione da usare è il metodo REQUERY applicato all'oggetto Form e l'evento in cui farlo a mio avviso è AfterUpdate di Form(quella in cui inserisci i dati).

    Sicchè diventerebbe
    
    Private Sub Form_AfterUpdate()
       Me!NomeContainerSubForm.Form.Requery
    End Sub
    Con [NomeContainerSubForm] spero tu conosca la differenza tra Container della SubForm ed invece Oggetto SubForm... sono 2 cose diverse...
  • Re: Aggiornare valori in una sottomaschera in tempo reale

    [NomeContainerSubForm] è il nome etichetta della sottomaschera?
    facendola cosi Me![saldo_Query].Form.Requery, si aggiornano i valori della sottomaschera sia della somma entrata che somma uscita ma la casella di testo non associata che come valore predefinito ha "=[Somma Di cassa_entrata]-[Somma Di cassa_uscite]" non si aggiorna se non si chiude e riapre la maschera
  • Re: Aggiornare valori in una sottomaschera in tempo reale

    luigionofrio ha scritto:


    [NomeContainerSubForm] è il nome etichetta della sottomaschera?
    facendola cosi Me![saldo_Query].Form.Requery, si aggiornano i valori della sottomaschera sia della somma entrata che somma uscita ma la casella di testo non associata che come valore predefinito ha "=[Somma Di cassa_entrata]-[Somma Di cassa_uscite]" non si aggiorna se non si chiude e riapre la maschera
    Prova a forzare il RECALC della textbox subito dopo il Requery.
    Me![saldo_Query]!NomeTextbox.Recalc
    
  • Re: Aggiornare valori in una sottomaschera in tempo reale

    Prova a forzare il RECALC della textbox subito dopo il Requery.
    Codice: Seleziona tutto
    Me![saldo_Query]!NomeTextbox.Recalc

    ho provato ad inserirlo sotto al requery, ma mi da errore vba,
    Private Sub Form_AfterUpdate()
    Me!saldo_Query.Form.Requery
    Me![saldo_Query]!testo5.Recalc
    End Sub

    sarà un errore di sintassi ddi access 2003? o non ho capito un tubo io?
  • Re: Aggiornare valori in una sottomaschera in tempo reale

    Associa ai due controlli testo Entrata ed Uscita nella scheda Evento alla proprietà Dopo aggiornamento [Routine evento] ed all'inteno delle due routine scrivi Me.Refresh
    il codice nel modulo relativo alla maschera prima nota deve dintare il seguente:
    
    Private Sub Entrata_AfterUpdate()
        Me.Refresh
    End Sub
    
    Private Sub Uscita_AfterUpdate()
        Me.Refresh
    End Sub
    
    inoltre non c'è bisogno di creare il campo calcolato "=[Somma Di cassa_entrata]-[Somma Di cassa_uscite]", basta apportare la seguente modifica alla query:
    
    SELECT Sum(tContabilità.Entrata) AS SommaDiEntrata, Sum(tContabilità.Uscita) AS SommaDiUscita, Sum([Entrata]-[Uscita]) AS Saldo FROM tContabilità;
    
    ed essoci al controllo testo relativo al saldo il risultato Saldo della query.
  • Re: Aggiornare valori in una sottomaschera in tempo reale

    Grazie carletto! sei stato la manna dal cielo funziona alla perfezione!
Devi accedere o registrarti per scrivere nel forum
6 risposte