› Sviluppare funzionalita su Microsoft Office con VBA › [ACCESS]Movimenti cassa con saldo precedente.
-
AutoreArticoli
-
Ciao a tutti.
s0no tre giorni che provo e riprovo ma mi sono arreso... chiedo aiuto agli esperti:
allego una maschera che mi visualizza i movimenti della cassa da una determinata data ad un'altra.
Quello che non riesco ad ottenere è il saldo dare e avere alla data immediatamente precedete alla date da me indicate.
Grazie del vostro prezioso aiuto.
Luigi
Allegati:
You must be logged in to view attached files.Quello che non riesco ad ottenere è il saldo dare e avere alla data immediatamente precedete alla date da me indicate.
Per favore, fai l'esempio concreto. Se scegli dal 1 febbraio al 28 febbraio 2019, oppure mese: febbraio (di che anno?), che risultato ti aspetti? e dove dovrebbe essere visualizzato? e il saldo deve comprendere tutti i movimenti esistenti o solo quelli dell'anno specificato dall'intervallo temporale? (cioè: indico febbraio, mi aspetto il saldo al 31 gennaio 2019).
Intanto chiedo scusa per non aver specificato che si tratta di access.
Intanto il programmanon prende in considerazione l'anno perchè ogni fine esercizio comincio da zero, naturalmente indicando i riporti dell'anno precedente.
Vorrei che prima della riga dove viene visualizzato il primo movimento del periodo indicato, vemisse indicato il saldo dare/avere del perido precedente a quello scelto, sempre dello stesso anno.
Allego facsimile
grazie
Allegati:
You must be logged in to view attached files.Se non ho capito male fai una query che calcola la somma del campo "avere" e la somma del campo "dare" prendendo in considerazione il periodo dal 1 gennaio all'ultimo giorno del mese precedente a quello indicato dalla casella "dal". Assegni il risultato a un recordset e prelevi il risultato.
La difficoltà nasce solo dal fatto che devi calcolare l'ultimo del mese precedente. La formula che aiuta è: dateserial(anno, mese successivo, 0). Questo calcola la data dell'ultimo giorno del mese precedente a quello indicato. Esempio: dateserial(2019, 3, 0) restituisce 28/02/2019 perchè è il giorno prima del 1° marzo.
Quindi la tua istruzione VBA potrebbe essere così:
Set rs = CurrentDb.OpenRecordset("SELECT Sum(Avere) As A, Sum(Dare) As D FROM Dati WHERE Data < #" & Format(dateserial(year(now), month(cmbmese & " 2019"), 0), "mm/dd/yyyy") & "# ") 'in rs!A hai la somma di Avere 'in rs!D hai la somma di DareL'accrocchio con Month sul nome del mese scritto così è perchè in cmbmese non hai associato dei numeri ma del testo corrispondente ai nomi dei mesi (di solito la prima colonna è numerica ed è la colonna associata, a lunghezza zero, la seconda colonna è la descrizione)
Non capisco perchè non riesco a rispondere.
Comunque, intanto grazie per la spiegazione.
Vi chiedo ancora un po di pazienza perché non riesco a trovare il modo di mettere in pratica queste istruzioni.
Grazie
non riesco a trovare il modo di mettere in pratica queste istruzioni.
Provo ad allegarti il file da me modificato, vediamo se pian piano troviamo una quadra 🙂
Allegati:
You must be logged in to view attached files.Ok molto bene
ti ringrazio infinitamente, non ci sarei mai più arrivato da solo.
Chiedo ancora scusa ma, come avrai capito, ci sono delle cose troppoo complicate per me.
Grazieeeeeeeeeeee.
Non preoccuparti, non c'è niente di magico, è una query che calcola la somma di dare e avere in funzione della data immessa nella combobox del mese (quindi deve solo pensare a ricavare il mese precedente), la query viene assegnata a una variabile di tipo Recordset e quindi i corrispondenti valori vengono recuperati e attribuiti alle due textbox della sottomaschera che li contiene.
Ciao a tutti
chiedo scusa ma provando e riprovando ho notato un piccolo problema.
Quando chiedo mi compare il saldo dei mesi precedenti a quello richiesto, non vengono conteggiate le registrazioni fatte all'ultimo giorno dei mesi precedenti. Se cambio la data per esempio dal 31 gennaio al 30 gennaio allora la conteggia.
Grazio per un aiuto
Probabilmente basta aggiungere la condizione di uguaglianza alla query di estrazione (non ho provato, lo dico a naso):
Set rs = CurrentDb.OpenRecordset("SELECT Sum(Avere) As A, Sum(Dare) As D FROM Dati WHERE Data <= #" & Format(dateserial(year(now), month(cmbmese & " 2019"), 0), "mm/dd/yyyy") & "# ") 'in rs!A hai la somma di Avere 'in rs!D hai la somma di DareCioè, selezionale somme di dare e avere da "Dati" quando la data è minore *o uguale* all'ultimo del mese. Nell'espressione precedente mancava "o uguale". Secondo me è così, ma se così non è, fai sapere 🙂
Ho applicato il tuo suggerimento ma credo non funzioni bene.
Ti mando una copia
Grazie del tempo che mi hai dedicato e mi continui a dedicare.
Allegati:
You must be logged in to view attached files.Ci darò un'occhiata stasera! Come sempre se non vedete risposte in tempi ragionevoli chiamatemi 🙂
-
AutoreArticoli
