Condividi tramite

Somma di un campo calcolato in sottomaschera Access.

Anonimo
2016-06-15T12:56:19+00:00

Buongiorno, seguendo quanto indicato al seguenet link:

Somma di un controllo calcolato

www.donkarl.com/it?FAQ2.22  e per una funzione indicatami dall'amico Sandro Peruz, ho inserito in una casella di testo non associata posizionata in una sottomaschera la sottoelencata funzione

=Somma(Hour([tempo])+Minute([tempo])/60)*[costo]

che dovrebbe sommarmi tutti gli importi riportati  nel campo Totale ( campo già calcolato con la seguente funzione inserita =(Hour([tempo])+Minute([tempo])/60)*[costo]) ma in realtà mi somma sempre gli importi come riportato dalle 2 schermate allegate che riportano in una la somma dell'importo corretto ma nella 2^ schermata la somma non è corretta e cioè il totale nella casella non associata dovrebbe indicare €  130,00  complessivi invece indica  € 287,50.

Come posso ovviare a questo problema?

P.s. per ora spero di essere stato chiaro, ho un'altra domanda da porre sempre inerente allo stesso oggetto.

Ciao Nicola.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-06-16T17:15:49+00:00

ciao Nicola,

trovo spesso anch'io i tempi di risposta di controlli calcolati delle forms non così efficiente ed è una della ragioni per la quali l'uso delle funzioni sui domini è da apprezzare "a piccole dosi".

nel tuo scenario non trovo sia così' ancora inaccettabile, comunque un importante miglioramento lo ottieni elaborando il calcolo con un recordset e assegnando ai controlli non associati il relativo risultato.

Ovviamente, personalizza il nome dei controlli, e....magari...anche il nome dei campi....id non è così significativo.

Option Compare Database

Option Explicit

Private rst As dao.Recordset

Private Sub Form_Current()

updateTotalCost

updateTotalHour

End Sub

Private Sub updateTotalCost()

Set rst = DBEngine(0)(0).OpenRecordset("select sum((Hour([tempo])+Minute([tempo])/60)*[costo]) from tblTurniIrrigazione where id=" & Me.ID, dbopensnapshot)

Me.txtHours = rst.fields(0)

Set rst = Nothing

End Sub

Private Sub updateTotalHour()

Dim strSql As String

strSql = "SELECT Sum(DatePart('h',[Tempo]))+Fix(Sum(DatePart('n',[tempo]))/60) & ':' & " & _

          "Format$(Sum(DatePart('n',[tempo])) Mod 60,'00') FROM tblTurniIrrigazione where id=" & Me.ID

Set rst = DBEngine(0)(0).OpenRecordset(strSql, dbopensnapshot)

Me.txtTempo = rst.fields(0)

Set rst = Nothing

End Sub

ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-06-17T06:55:28+00:00

    Ciao Sandro buongiorno, grazie per le tue preziose spiegazioni e i tuoi codici perfetti e funzionanti.

    Cit: Ovviamente, personalizza il nome dei controlli, e....magari...anche il nome dei campi....id non è così significativo.

    L'ho fatto, anche perché tempo fa mi avevi consigliato di creare campi con nomi uniti e non divisi.

    Ho seguito pure il consiglio di Mimmo Laurenza dato ad un altro amico della community l'altro giorno per quanto riguarda la divisione in due campi del Cognome e del nome.

    Buona giornata a tutti.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-06-16T06:15:52+00:00

    Ciao Sandro, buongiorno, grazie ancora.

    Per l'altro quesito sempre attinente l'argomento, ho notato che al passaggio al record successivo  nella sottomaschera nelle due caselle di testo non associate, l'aggiornamento delle formule e dei totali non avviene in tempo reale bensì dopo pochi secondi.

    Chiedo, è possibile aggiornare velocemente le somme nei  campi calcolati senza attendere alcun tempo?

    Buona giornata a tutti.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-06-15T15:12:16+00:00

    ciao Nicola,

    il ragionamento è corretto ma lo hai applicato male.

    prendi la formula  contenuta nel controllo totale :

    =(Hour([tempo])+Minute([tempo])/60)*[costo]

    e la "avvolgi" nella funzione somma :

    =somma((Hour([tempo])+Minute([tempo])/60)*[costo])

    vedrai che il risultato del calcolo sarà mostrato  correttamente.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento