Gestione spese

di il
15 risposte

Gestione spese

Buongiorno a tutti
Sono nuovo e mi presento con questa gatta da pelare.

Qui sotto c'è uno screenshot del db a cui sto lavorando.
Necessito che nella colonna saldo della qurey, quando capita una spesa da non pagare ma da scalare dalle successive, mi venga riportato il saldo fino all'esaurimento del credito.

 molto ingenuamente ho messo una condizione iif (cond1) che restituisce in negativo i pagamenti effettuati e in positivo gli importi da scalare.

Successivamente ho messo un Dsum, sempre associata ad una condizione iif, per calcolarmi un ipotetico saldo dove c'è la “X” rossa. Come si può notare dai valori, il tentativo è fallito.

L'intenzione era che la dsum comandata da un iif potesse calcolarmi solo i saldi considerando valori positivi. Come codice ho messo: 

saldo: IIf([cond1]<=0;"";DSum("([cond1])";"[qry di dominio]";"[id_mov] <=" & [id_mov]))

ovvero esegue la funzione al record appena precedente. ovviamente non ha funzionato

L'obbiettivo è ricreare la funzionalità dello screenshot di excel riportato di seguito. i valori sono ricopiati dalla medesima query di access, con l'aggiunta della colonna “saldo” funzionante riportata a destra: 

=SE (l'importo è = 0; “”; altrimenti, trattasi di valori negativi, sommali al precedente). 

detto terra terra, è una normale formula di saldo

dritte, idee?

dove sto sbagliando?

grazie in anticipo

saluti

15 Risposte

  • Re: Gestione spese

    Mah lo screenshot dov'è?

  • Re: Gestione spese

    C'hai ragione.

    Non me li ha tenuti

    Questo è il primo con la “X” rossa

    è l'ultima parte della query giusto per snellire l'esempio

    per lo screenshot di excel, evito perchè mi sono accorto poi di avere fatto una fesseria.

    un saluto

  • Re: Gestione spese

    Ciao, come le stai inserendo le immagini?

    Stai usando il pulsante della toolbar di quest'editor per fare l'upload?

  • Re: Gestione spese

    In effetti, no. 

    Ho usato il cattura schermo di Windows, copia e incolla. Alla prima occasione uso la toolsbar del forum.

    Grazie della dritta

  • Re: Gestione spese

    Ecco qua. forse ce l'ho fatta. Vi metto l'immagine per intero con i nomi integrali dei campi, in modo da poterli identificare con le formule.

    qn è l'importo, pg è il pagamento da effettuare, e sb l'importo da scalare dai successivi pagamenti fino all'estinzione del credito.

    il primo passo è stata determinare una condizione (cond1), in modo da avere un valore null se il qn fosse marcato VERO o se sb fosse risultato FALSO. viceversa mi mostra il valore di qn

    Nel dettaglio la formula:

    cond1: IIf([pg]=1 Or [sb]=0;Null;+[qn])

     il secondo passo (o quanto meno l'intento) è stato di usare la dsum valida se il valore di cond1 fosse diverso da 0

    saldo: IIf([cond1] Is Null;Null;DSum("([cond1])";"[qry_diSaldo]";"[id_mov] <=" & [id_mov]))

    p.s. il dominio qry_diSaldo è la query corrente e dello screenshot

    perchè la dsum mi calcola dei valori dove una funzione precedente a lei gli serve dei null?

    grazie a tutti.

    un saluto

  • Re: Gestione spese

    Hm……

    Forse i postumi dei bagordi delle feste, ma personalmente non ho capito assolutamente niente di quello che hai realizzato e dell'obiettivo che ti prefiggi.

    O almeno, l'obiettivo mi sembra di averlo capito, ma mi sembri molto lontano, sia nella logica di un database, sia nel modo di realizzarlo.

    Mi sembra che stai usando access come si userebbe excel.

    I dubbi sono:

    Come vengono immessi, ed aggiornati i dati presenti nella tabella?

    Come pensi di procedere per fare in modo che un determinato pagamento X, venga frazionato in diversi acconti fino al raggiungimento del saldo totale?

    Esiste solo questa tabella che aggiorni manualmente, oppure è il frutto di una query che prende i valori da altre tabelle dove archivi il singolo pagamento ed i successivi acconti fino al saldo?

    Se hai solo questa tabella, che magari aggiorni manualmente, neanche mago merlino riuscirebbe ad automatizzare quello che ti prefiggi di fare.

    Tra parentesi anche se fosse basata sulla logica di excel, sarebbe impossibile automatizzarla.

  • Re: Gestione spese

    Solo per rispondere alla domanda senza entrare nel merito di tutti il resto, perché credi che cond1 sia null in quei casi?

  • Re: Gestione spese

    Buondì a tutti

    a oregon. Ritengo che cond1 sia null in quanto c'è una condizione iif che ne detta il risultato. appunto il null se le condizione risultano vere.
    spero di aver interpretato correttamente la domanda.

    a fratac. Vero, hai ragione sul fatto che usare access come se fosse excel, sia una battaglia persa in partenza. 
    l'obbiettivo è capire la logica di access per ottenere il risultato.

    Metto giù il problema sotto un esempio più realistico.
    Inquilino e proprietario vivono sotto lo stesso tetto. l'inquilino non paga ne affitto ne mutuo, ma divide con il proprietario le spese delle bollette. Le incombenze per i lavori di manutenzione, che sono a carico del proprietario, vengono pagati dall'inquilino che poi scala gl'importi dalle partizioni delle bollette fino all'estinguersi del credito.

    una volta messa giù la tabella di tutte le spese, è necessario che una o più query possano dividermi i dati secondo le mie esigenze (una di queste è appunto quella dello screenshot).

    Questo è l'obbiettivo su cui sto sbattendo la testa da un po'.

    la dsum mi sembrava la via più logica, ma sto comunque provando altre vie 

    un saluto

  • Re: Gestione spese

    Senza entrare nel merito, della gestione del database.

    Mi pare, se ho capito bene e per questo chiedo conferma che:

    1) La query finale è senza soluzione di continuità, proprio come un foglio di excel 

    2) Il risultato del Saldo è corretto ma viene mostrato col segno -  (vedi -286,15… va vorresti 286,15 che è il risultato esatto) ?…è cosi?

    Se è cosi basta modificare l'ultima iif in questo senso:

    saldo: IIf([cond1] Is Null;Null;(DSum("([cond1])";"[qry_diSaldo]";"[id_mov] <=" & [id_mov]))* -1)

    Attento alle parentesi evidenziate qui:

    saldo: IIf([cond1] Is Null;Null;(DSum("([cond1])";"[qry_diSaldo]";"[id_mov] <=" & [id_mov]))* -1)

    Saluti

  • Re: Gestione spese

    Fai una cosa, che forse ti aiuta a capire come procedere.

    Usa la composizione automatica e crea un report, mettendo i dati che ti interessano.

    In teoria con tre click hai quello che ti occorre. È una situazione che i report gestiscono molto facilmente.

    Poi, puoi guardare il codice del report, oppure usarlo per le tue esigenze.

  • Re: Gestione spese

    Ho smarmittato un po' con la dsum e adesso funziona leggermente meglio. quantomeno ne riesco a capire meglio il funzionamento visto che era la prima volta che la usavo 

    farla gestire dal report non l'avevo pensata. vale la pena di provare. 

    grazie a tutti per degli spunti

  • Re: Gestione spese

    Mah hai letto il mio ultimo post?

    11/01/2023 - YT-1300 ha scritto:


    funziona leggermente meglio. 

    Questa è bella, mi ricorda tanto la mia compagna di banco del liceo che ogni tanto restava leggermente incinta.

  • Re: Gestione spese

    12/01/2023 - Gianni55 ha scritto:


    Questa è bella, mi ricorda tanto la mia compagna di banco del liceo che ogni tanto restava leggermente incinta.

    bello rimanere leggermente incinta XD

    funziona, ma non soddisfa l'esigenza applicativa
    sto provando gli spunti di fratac e far fare il lavoro al report

    piano piano ne verrò a capo

  • Re: Gestione spese

    Ti invio un piccolo esempio di quando iniziavo ad usare access.

    Ti avverto che funziona male, la logica su cui si basa non è del tutto esatta ed è molto elementare, non usa codice vba o particolari automazioni, ed è incompleto, visto che era solo un esercizio. Dovrebbe andar bene come esempio per indirizzarti sulla via giusta. O almeno su una delle tante vie che si possono usare per fare quello che vuoi realizzare. 
    Questa non è proprio la strada migliore, ma ti da uno spunto su come costruire report e somme.

    Ci sono anche altri report e maschere di prova che non sono collegati alla maschera principale.
    Dovresti comunque vederli nel pannello di navigazione.

    L'ho riempito con dati al volo.

    https://1drv.ms/u/s!ArntwbcQd1MfbcdDa7pHQp3AMaY

Devi accedere o registrarti per scrivere nel forum
15 risposte