Aggiornamento dati

di il
11 risposte

Aggiornamento dati

Buongiorno,

ho creato una maschera dove vedo i dati degli ordini inseriti e una sottomaschera dove registro i movimenti.

Nella maschera ho aggiunto dei campi che mi fanno vedere il totale delle movimentazioni e il saldo.

Il problema è che non riesco ad aggiornare i totali se non uscendo e rientrando dalla maschera.

Vorrei la possibilità dopo l'aggiornamento dell'ultimo campo di poter eseguire l'aggiornamento senza dover uscire dalla maschera.

Grazie

11 Risposte

  • Re: Aggiornamento dati

    Immagino tu debba aggiornare il totale nwlla Form dopo ave inserirò un movimento nella subform…?

    Devi far eseguire l'azione di requery della form dopo inserimento della subform.

    Tuttavia non è il massimo in quanto perderesti il riferimento al record, rendendo più articolato il sistema…

    Se tu mettessi il calcolo del totale nella SubForm, magari nel pie di pagina basterebbe aggiornare la SubForm che sarebbe automatico se usi il somma(campo valore)…

    Vedi tu

  • Re: Aggiornamento dati

    Refresh…

    Dai un'occhiata a questo…

    https://support.microsoft.com/en-us/office/refresh-or-requery-data-76e8c8b5-b8b4-49eb-a7d5-a472e742366c

  • Re: Aggiornamento dati

    11/06/2023 - paolocov ha scritto:


    ho creato una maschera dove vedo i dati degli ordini inseriti e una sottomaschera dove registro i movimenti.

    Ciao,
    puoi specificare meglio quali informazioni contiene la Form principale ?

    - Un record che rappresenta l'ordine che nella SubForm vai ad Inserire/aggiornare ?

    - Oppure più records che rappresentano gli ordini esistenti dove scelto uno di essi la SubForm si popola con i dettagli dell'ordine ?

  • Re: Aggiornamento dati

    11/06/2023 - sihsandrea ha scritto:


    Refresh…

    Dai un'occhiata a questo…

    https://support.microsoft.com/en-us/office/refresh-or-requery-data-76e8c8b5-b8b4-49eb-a7d5-a472e742366c

    Leggi questo in merito a Refresh:

    https://learn.microsoft.com/en-us/office/vba/api/access.form.refresh

    Non ricarica i nuovi ne rimuove i cancellati, contrariamente a quanto indicato dal Link che citi, che temo confonda chi legge, nel caso prova pure.

    Serve il Requery

    Saluti.

  • Re: Aggiornamento dati

    11/06/2023 - @Alex ha scritto:


    11/06/2023 - sihsandrea ha scritto:


    Refresh…

    Dai un'occhiata a questo…

    https://support.microsoft.com/en-us/office/refresh-or-requery-data-76e8c8b5-b8b4-49eb-a7d5-a472e742366c

    Leggi questo in merito a Refresh:

    https://learn.microsoft.com/en-us/office/vba/api/access.form.refresh

    Non ricarica i nuovi ne rimuove i cancellati, contrariamente a quanto indicato dal Link che citi, che temo confonda chi legge, nel caso prova pure.

    Serve il Requery

    Saluti.

    Ha scritto:

    Vorrei la possibilità dopo l'aggiornamento dell'ultimo campo di poter eseguire l'aggiornamento senza dover uscire dalla maschera.

    Qualcosa deve aver modificato…

    Requery ti esegue nuovamente la query

    Nel caso di select * from bla bla e sei al record n

    Ti porta al record 1

    Refresh, ti lascia sul record corrente ma aggiorna i dati.

    Se consideriamo che quando lanci una view non fai altro che prendere i dati dal db e visualizzarli, possiamo paragonare la query ad un tizio a che apre un file di testo in contemporanea al tizio b. Se bi fa modifiche e le salva il tizio a continua a vedere il file originario. Se a chiude e salva, allora sovrascrive le modifiche di b.

    Per farla breve, la query, fa una foto ai dati, se lo scenario cambia bisogna rinfrescarlo, refresh appunto.

    Requery rifà una foto ma non ti riposiziona sul record corrente. Puoi fare requery ma prima devi segnarti l'indice del record corrente e poi riposizionarti con una ricerca.

  • Re: Aggiornamento dati

    Il campo si aggiorna in fase di inserimento movimenti meno facilmente in fase di modifica… oppure a tuo avviso quando inserisce o cancella è contemplato che sia da chiudere…?

    Quindi nell'insieme non importa se ritorna al 1° record se è in fase inserimento lato M .. 

    Ora a meno di discriminare la modifica dall'inserimento quanto suggerisci funziona solo in fase di modifica ma, ci rifletterei… lo vedo meno probabile se si analizza meglio.

  • Re: Aggiornamento dati

    11/06/2023 - sihsandrea ha scritto:


    Se consideriamo che quando lanci una view non fai altro che prendere i dati dal db e visualizzarli, possiamo paragonare la query ad un tizio a che apre un file di testo in contemporanea al tizio b. Se bi fa modifiche e le salva il tizio a continua a vedere il file originario. Se a chiude e salva, allora sovrascrive le modifiche di b.

    e se lavori con recordset clone ?  non hai bisogno di refresh o requery ….perchè alla fine lavori sempre sullo stesso recordset. 

    @Alex lo vedi possibile un recordset clone in questo caso ?

  • Re: Aggiornamento dati

    11/06/2023 - paolocov ha scritto:


    Buongiorno,

    ho creato una maschera dove vedo i dati degli ordini inseriti e una sottomaschera dove registro i movimenti.

    Nella maschera ho aggiunto dei campi che mi fanno vedere il totale delle movimentazioni e il saldo.

    Il problema è che non riesco ad aggiornare i totali se non uscendo e rientrando dalla maschera.

    Vorrei la possibilità dopo l'aggiornamento dell'ultimo campo di poter eseguire l'aggiornamento senza dover uscire dalla maschera.

    Grazie

    Per realizzare quello che hai fatto, esistono vari metodi e di conseguenza anche quello che chiedi va realizzato in base al metodo che hai usato per fare la somma.

    Se non ci fai vedere il metodo, o il codice che hai usato, nessuno potrà mai aiutarti, perchè nessuno ha la sfera di cristallo.

    Puoi cortesemente farci vedere quello che hai realizzato?

  • Re: Aggiornamento dati

    11/06/2023 - @Alex ha scritto:


    Il campo si aggiorna in fase di inserimento movimenti meno facilmente in fase di modifica… oppure a tuo avviso quando inserisce o cancella è contemplato che sia da chiudere…?

    Quindi nell'insieme non importa se ritorna al 1° record se è in fase inserimento lato M .. 

    Ora a meno di discriminare la modifica dall'inserimento quanto suggerisci funziona solo in fase di modifica ma, ci rifletterei… lo vedo meno probabile se si analizza meglio.

    ?!?

    Modifica un record ma non gli si aggiorna un totale di qualcosa che  secondo me deriva da una query non da un campo calcolato.

    Supponiamo che inserisco una riga di una fattura.

    Cambiano: totale documento e totale fatturato al cliente. Se non aggiorno lo scadenziario mi ritrovo con la fattura attuale che passa da 100 a 90 ma il totale nello scadenziario ancora a 100. Per vedere 90 devo fare un requery o un refresh (se la query richiama il totale fatture per cliente selezionato è indifferente) ma, se non uso un campo calcolato ne una query e inserisco totale imponibile, totale iva e totale fattura, mi restano ancora gli stessi ante-modifica. Se lancio un requery alla madre (fatture) a seguito della modifica della figlia (rigafattura), mi ritrovo alla fattura nr1  Refresh, a differenza di requery, ripeto, va ad aggiornare e ti porta al record corrente. Se nel frattempo, un operatore ha modificato la fattura n e io lavoro sulla n+1 requery mi aggiorna la fattura n e la n+1 anche se mi porta alla fattura 1.

  • Re: Aggiornamento dati

    Con Access, non si usano le query per fare i totali…, da quì serve sempre mettersi nella logica di prodotto, poi lasciamo momentaneamente da parte si può, o non si può o si dovrebbe… questo è il prodotto.

    Con Access i totali si possono fare in modo differente, ti dirò che basta mettere un Controllo nel PièDiPagina con un Calcolo che si aggiorna semplicemente con un Recalc, perchè le Form Continue(solitamente la parte definibile Detail o lato M) sono un po particolari…

    Quindi un controllo con Origine riga =Somma(ControlloValuta) restituisce il totale senza dover scomodare query, questo perchè le maschere continue vengono disegnate scorrento l'intero Recordset, un po come fa il Report, disegna solo i rettangoli ma non esistono i Records ma solo il Corrente, e per poterli esporre li scorre, quindi il Somma(valore) è sempre aggiornato, a fronte di Modifiche o Inserimenti basterebbe il Recalc.

    Purtroppo spesso chi usa access si complica la vota per non conoscenza del mezzo ne delle basi minime di teoria, come in questo caso che il Calcolo della Parte Detail viene fatto nella Master, a quel punto hai ragione tu basterebbe un Ricalcolo della Query di Totale, o una riesecuzione della Somma, esiste il DSUM per poco efficiente sia c'è ed anche per quello basterebbe il Recalc.

    Insomma serve distinguere le cose se volessimo essere precisi…

  • Re: Aggiornamento dati

    12/06/2023 - @Alex ha scritto:


    Con Access, non si usano le query per fare i totali…, da quì serve sempre mettersi nella logica di prodotto, poi lasciamo momentaneamente da parte si può, o non si può o si dovrebbe… questo è il prodotto.

    Con Access i totali si possono far ein modo differente, ti dorò che basta mettere un Controllo nel PièDiPagina con un Calcolo che si aggiorna semplicemente con un Recalc, perchè le Form Continue(solitamente la parte definibile Detail o lato M) sono un po particolari…

    Quindi un controllo con Origine riga =Somma(ControlloValuta) restituisce il totale senza dover scomodare query, questo perchè le maschere continue vengono disegnate scorrento l'intero Recordset, un po come fa il Report, disegna solo i rettangoli ma non esistono i Records ma solo il Corrente, e per poterli esporre li scorre, quindi il Somma(valore) è sempre aggiornato, a fronte di Modifiche o Inserimenti basterebbe il Recalc.

    Purtroppo spesso chi usa access si complica la vota per non conoscenza del mezzo ne delle basi minime di teoria, come in questo caso che il Calcolo della Parte Detail viene fatto nella Master, a quel punto hai ragione tu basterebbe un Ricalcolo della Query di Totale, o una riesecuzione della Somma, esiste il DSUM per poco efficiente sia c'è ed anche per quello basterebbe il Recalc.

    Insomma serve distinguere le cose se volessimo essere precisi…

    Ah! Dovrei riesumare i ricordi di access…. Ma sono passati 30 anni…

    Ma allora non avrebbe senso parlare neanche di requery…

    Bisogna capire solo se usa i pacchetti preconfezionati, e in questo caso indagare sul perché non si aggiorna da solo, o se usa query.

Devi accedere o registrarti per scrivere nel forum
11 risposte