Campo calcolato in base all'ultimo record

Forum dedicato interamente a Microsoft Access

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
luigionofrio
New Entry
Messaggi: 12
Iscritto il: 09 ott 2017, 17:34

Campo calcolato in base all'ultimo record

Messaggioda luigionofrio » 09 ott 2017, 21:47

In una form, ho 3 campi "entrate" "uscite" " saldo" quello che voglio è che il saldo del record precedente venga incrementato o diminuito in base all"entrata" e "uscita" del record attuale e il valore così calcolato venga memorizzato nel campo saldo del record attuale, mi potete aiutare a trovare la soluzione? grazie immensamente
Avatar utente
@Alex
Utente Senior
Messaggi: 3497
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Campo calcolato in base all'ultimo record

Messaggioda @Alex » 09 ott 2017, 22:25

Perché credi di dover salvare un saldo...?
Puoi darci una visione tecnica di questa scelta...?
La risposta poi sarebbe banale aggiungendo alla tabella un campo saldo precedente da non visualizzare ma da valorizzare come Defaultvalue con il saldo attuale...
In questo modo avresti sempre riportato il saldo precedente da rendere non editabile per fare il calcolo del saldo attuale.
Ci sono altri modi, come recuperare l'ultimo saldo... ma io trovo più comodo quanto suggerito.

Tuttavia ti suggerisco, nel rispondere alle 2 domande iniziali, di riflettere in quanto i calcoli si evita di memorizzarli in tabella ma si può valutare di effettuarli al volo in queries... e si chiamano Running Sum... trattati anche in articoli Ms.
Ci sono casi in cui la convenienza di salvarli risolve alcuni problemi... ma ne crea molti altri... ipotizza di aver fatto qualche errore contabile o di dover applicare ricalcoli...
Sono contrario al CROSSPOST
@Alex
cgf
Utente Semi-Senior
Messaggi: 180
Iscritto il: 18 lug 2017, 10:37

Re: Campo calcolato in base all'ultimo record

Messaggioda cgf » 09 ott 2017, 22:30

Dove è la difficoltà?
Le entrate ed uscite sono progressive e vuoi tenere traccia dei movimenti entrata/uscita/saldo?
somma algebrica di +entrata -uscita +saldo precedente se prima riga saldo precedente = 0
Ovviamente il saldo conviene ricalcolarselo ogni volta, non ci si mette molto.
luigionofrio
New Entry
Messaggi: 12
Iscritto il: 09 ott 2017, 17:34

Re: Campo calcolato in base all'ultimo record

Messaggioda luigionofrio » 10 ott 2017, 08:03

Mi potete postare una soluzione pratica? uso access 2003 e gli errori di sintassi non riesco a risolverli
Avatar utente
@Alex
Utente Senior
Messaggi: 3497
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Campo calcolato in base all'ultimo record

Messaggioda @Alex » 10 ott 2017, 08:46

Niente pappa pronta... prova a fare qualche test tu e vediamo dove trovi problemi...
Sono contrario al CROSSPOST
@Alex
luigionofrio
New Entry
Messaggi: 12
Iscritto il: 09 ott 2017, 17:34

Re: Campo calcolato in base all'ultimo record

Messaggioda luigionofrio » 10 ott 2017, 14:26

Quello che non riesco a selezionare è il saldo del record precedente, riesco ad avere il saldo totale di tutti i record ma non riesco a selezionare quello del record precedente
Avatar utente
@Alex
Utente Senior
Messaggi: 3497
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Campo calcolato in base all'ultimo record

Messaggioda @Alex » 10 ott 2017, 14:47

Dado per scontato che non vuoi ricalcolarlo ogni volta(speriamo non vi siano mai cambiamenti nei dati già immessi altrimenti...)... non hai proprio capito quello che ti ho suggerito...!

Cosa non ti è chiaro del metodo che ti ho spiegato che esattamente ti consente di evitare di complicarti la vita dovendo recuperare un valore precedente...?
Sono contrario al CROSSPOST
@Alex
luigionofrio
New Entry
Messaggi: 12
Iscritto il: 09 ott 2017, 17:34

Re: Campo calcolato in base all'ultimo record

Messaggioda luigionofrio » 10 ott 2017, 15:32

Alla tabella prima_nota ho aggiunto un campo "gestione_cassa_saldo" e nella form "contabilita" ho aggiunto questo campo sul cui valore predefinito ho messo
"=DLookUp([gestione_cassa_saldo]";"prima_nota";"[ID]=Forms![contabilita]![ID]-1")
id è il contatore presente nella tabella e riportato nella maschera
per continuare nel tuo suggerimento, a questo punto dovrebbe uscire in un nuovo record nella casella gestione_cassa_saldo il valore precedente dello stesso campo nel record precedente, ma mi si presenta un bel 0,00 (proprietà del campo in euro con 2 cifre decimali), dove sbaglio?
Avatar utente
@Alex
Utente Senior
Messaggi: 3497
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Campo calcolato in base all'ultimo record

Messaggioda @Alex » 10 ott 2017, 17:02

Ti ho detto decisamente tutt'altro... rileggi.
Sono contrario al CROSSPOST
@Alex
luigionofrio
New Entry
Messaggi: 12
Iscritto il: 09 ott 2017, 17:34

Re: Campo calcolato in base all'ultimo record

Messaggioda luigionofrio » 11 ott 2017, 09:39

Ok! sarà la mia ignoranza ma più si va avanti e piu mi confondo le idee (le poche che ho) quindi rinuncio
grazie lo stesso
CarlettoFed
Utente Junior
Messaggi: 26
Iscritto il: 06 giu 2017, 16:33

Re: Campo calcolato in base all'ultimo record

Messaggioda CarlettoFed » 11 ott 2017, 09:55

Prechè non posti il database solo con un minimo di dati per poter vedere come è gestito?
Avatar utente
@Alex
Utente Senior
Messaggi: 3497
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Campo calcolato in base all'ultimo record

Messaggioda @Alex » 11 ott 2017, 10:38

luigionofrio ha scritto:Ok! sarà la mia ignoranza ma più si va avanti e piu mi confondo le idee (le poche che ho) quindi rinuncio
grazie lo stesso

Provo a semplificarti la cosa i ragionamenti fini, se serviranno dovrai maturarli tu...
Cancella tutto quello detto sopra.
Siccome per calcolare il SALDO(Attuale):

Codice: Seleziona tutto

SALDO=SaldPrecedente+Entrata+Uscita

E siccome questo lo farai su BeforeUpdate da codice in quanto vuuoi salvare il calcolo nel Controllo associato in Tabella, devi ricavare il Valore Saldo precedente.
Facendo la cosa più semplice, anche se meno funzionale

Codice: Seleziona tutto

Private Form_BeforeUpdate(Cancel As Integer)
Dim curSaldoPrec as Currency
curSaldoPrec = Dlast("NomeCampoSaldo","NomeTabella")
Me!NomeControlloSaldo.Value=curSaldoPrec + Me!Entrata - Me!Uscita


Ho dato per scontato che USCITA sia ugualmente a segno positivo esendo con Denominazione USCITA, altrimenti cambia il segno nel calcolo di Somma.

Tieni presente che ENTRATE ed USCITE possono essere gestite semplicemente usando appunto il SEGNO senza differenziarle, ma chiamando Movimento il Flusso di denaro, che se ha segno [+] sarà in ingresso e se avrà segno [-] sarà in uscita.
Vedi tu.
Sono contrario al CROSSPOST
@Alex
luigionofrio
New Entry
Messaggi: 12
Iscritto il: 09 ott 2017, 17:34

Re: Campo calcolato in base all'ultimo record

Messaggioda luigionofrio » 12 ott 2017, 14:33

Ma questo codice lo metto su beforeupdate del controllo campo associato al saldo o su beforeupdate della maschera? ma non esiste in giro un qualche esempio pratico del tipo di quelli che stanno sul sitocomune?
Avatar utente
@Alex
Utente Senior
Messaggi: 3497
Iscritto il: 29 feb 2012, 17:59
Contatta:

Re: Campo calcolato in base all'ultimo record

Messaggioda @Alex » 12 ott 2017, 18:15

luigionofrio ha scritto:Ma questo codice lo metto su beforeupdate del controllo campo associato al saldo o su beforeupdate della maschera? ma non esiste in giro un qualche esempio pratico del tipo di quelli che stanno sul sitocomune?

Non ci credo che fai una domanda simile... ma non perché è scontato... ma perché in quello che ti ho scritto È IMPOSSIBILE AVERE DUBBI l'ho indicato benissimo nel codice dove metterlo...
Devo capire se sei poco attento o....
Il sitocomune non funziona da anni... ma Google funziona sempre molto bene.
Sono contrario al CROSSPOST
@Alex
ettore56
Utente Senior
Messaggi: 219
Iscritto il: 09 mag 2017, 10:56
Località: Lecco
Contatta:

Re: Campo calcolato in base all'ultimo record

Messaggioda ettore56 » 13 ott 2017, 07:30

@Alex ha scritto:
luigionofrio ha scritto:Ma questo codice lo metto su beforeupdate del controllo campo associato al saldo o su beforeupdate della maschera? ma non esiste in giro un qualche esempio pratico del tipo di quelli che stanno sul sitocomune?

Non ci credo che fai una domanda simile... ma non perché è scontato... ma perché in quello che ti ho scritto È IMPOSSIBILE AVERE DUBBI l'ho indicato benissimo nel codice dove metterlo...
Devo capire se sei poco attento o....
Il sitocomune non funziona da anni... ma Google funziona sempre molto bene.

Beh, effettivamente, se leggi attentamente (e neanche poi tanto attentamente) il codice che ti ha postato Alex, e ci trovi scritto

Private Form_BeforeUpdate

non dovresti avere dubbi...!!!

Torna a “Microsoft Access”

Chi c’è in linea

Visitano il forum: Bing [Bot], Ldragon, Yahoo [Bot] e 95 ospiti