CAMPO CALCOLATO SU MASCHERA

di il
8 risposte

CAMPO CALCOLATO SU MASCHERA

Ciao a tutti, non riesco a risolvere il seguente problema e forse si tratta di un problema strutturale:

ho una tabella avvisi relazionata con una tabella rateizzi. Relazione uno a molti nel senso che per ogni avviso corrispondono piu' rate di rateizzo.
Ho creato una maschera con un pulsante che apre una maschera con il relativo rateizzo. La maschera che visualizza le rate relative all'avviso e' in formato dati.
Quello che vorrei ottenere, nella maschera rateizzi in formato dati e' di visulaizzare nel pie' di pagina l'importo totale dell'avviso e un controllo che restituisce come valore il residuo da pagare man mano che inserisco le rate pagate.
Il problema che mi trovo ad affrontare e' che la tabella rateizzo ha un campo che si chiama "impostapagata" e che contiene l'importo pagato per ogni rata. Ovviamente potrebbero esserci anche 12 rate o piu' che fanno riferimento a quel campo per lo stesso avviso. Aggiungendo un campo di testo con la formula IMPORTO AVVISO - IMPOSTA PAGATA = RISULTATO. Tuttavia il problema e' che access considera l'importo inserito solo in una rata del campo impostapagata.

8 Risposte

  • Re: CAMPO CALCOLATO SU MASCHERA

    Il problema non è di Access... ma di come tu hai gestito i dati.
    Personalmente credo di aver capito poco.., ma devi aver modo di poter fare le somme e prodotti... Somma(PrezzoUnitario*Quantita), se così non fosse prova a pensare come sia meglio standardizzare...

    Di base nella Tabella RATEIZZI devi avere SOLO l'importo del singolo versamento, che poi possa essere fatto da 4 Ratei, avrai Quantità 4 ed Importo Totale..., questo se conteggi il Numero delle rate, ma se verifichi solo il totale, che abbia pagato 4 Ratei oppure una MaxiRata da 4 ti cambia poco...
    Il problema è che nella Tabella Rateizzi non avrai mai l'importo totale del saldo, quel valore deve essere nella Tabella Padre... quindi se vuoi che nella Maschera Rateizzi, si veda sia il Totale che il Residuo, devi ricavare con una Dlookup il totale, mentre il Saldo è il Sun degli importi dei Ratei...
  • Re: CAMPO CALCOLATO SU MASCHERA

    Ciao cerco di spiegare meglio come ho strutturato i dati: ho costruito due tabelle una che si chiama AVVISI e una che si chiama RATEIZZI.
    Nella tabella AVVISI vengono riportati tutti i dati relativi all'avviso tra i quali anche l'importo da pagare. L'importo puo' essere pagato in unic soluzione (quindi non servono rateizzi) ma puo' anche essere rateizzato e le rate possono essere di numero e importo variabile. Ovviamente Ogni volta che pago una rata diminuisce il debito che io ho. Per inserire il pagamento delle rate ho costruito appunto la tabella RATEIZZI che viene visualizzata in formato dati per una facilita' di lettura ed inserimento dati. La tabella RATEIZZI e' relazionata alla tabella AVVISI tramite il campo IDnumeroavviso. Nella pratica quando accendo alla maschera AVVISI che visualizza l'avviso richiesto ho crato un bottone che apre la maschera RATEIZZI che mi permette di visualizzare ed inserire dati fissando l'IDnumeroavviso. A questo punto si apre la maschera in formato dati fissata dull ID richiesto che genera varie record che si riferiscono tutte a quell'ID
  • Re: CAMPO CALCOLATO SU MASCHERA

    RATTS71 ha scritto:


    Ciao cerco di spiegare meglio come ho strutturato i dati: ho costruito due tabelle una che si chiama AVVISI e una che si chiama RATEIZZI.
    Nella tabella AVVISI vengono riportati tutti i dati relativi all'avviso tra i quali anche l'importo da pagare. L'importo puo' essere pagato in unic soluzione (quindi non servono rateizzi) ma puo' anche essere rateizzato e le rate possono essere di numero e importo variabile. Ovviamente Ogni volta che pago una rata diminuisce il debito che io ho. Per inserire il pagamento delle rate ho costruito appunto la tabella RATEIZZI che viene visualizzata in formato dati per una facilita' di lettura ed inserimento dati. La tabella RATEIZZI e' relazionata alla tabella AVVISI tramite il campo IDnumeroavviso. Nella pratica quando accendo alla maschera AVVISI che visualizza l'avviso richiesto ho crato un bottone che apre la maschera RATEIZZI che mi permette di visualizzare ed inserire dati fissando l'IDnumeroavviso. A questo punto si apre la maschera in formato dati fissata dull ID richiesto che genera varie record che si riferiscono tutte a quell'ID
    Il Pagamento che definisci "Unica Soluzione" è solo un "metodo di pagamento", ma, nella logica relazionale dei dati deve finire sempre nella Tabella che tu chiami RATEIZZI, che dovrebbe essere Pagamanti, che poi venga definito "Unica Soluzione" invece che "Rateo"... poco importa.
    Questo non per mia iniziativa, ma proprio per esigenza relazionale.
    Se tu invece hai pensato che nel caso di Unica Soluzione non dovesse finire nella Tabella Rateizzi, hai commesso un errore concettuale.
    Nella Tabella Avvisi è corretto tu abbia il TOTALE da Pagare(Credito), ma questo importo va poi confrontato con la Somma degli importi versati(compreso Unica Soluzione) per sapere se vi sia Debito Residuo o se no...

    Non hai fatto così...? Credo dovresti ripensarci...
    Hai fatto così...? Continuo a non capire il problema.
  • Re: CAMPO CALCOLATO SU MASCHERA

    Cerco di spiegare il funzionamento e la logica non tanto del database quanto, in questo caso dell'avviso e i suoi pagamenti.
    Alla ricezione dell'avviso quello che dovrei o vorrei fare e' registrare gli estremi dell'avviso in maniera tale che possa rintracciarlo nel tempo.
    I metodi di pagamento per gli avvisi sono due: o lo pago per intero o lo rateizzo o addirittura faccio un ravvedimento operoso (ma andiamo sul tecnico). Se lo pago subito per intero non ho bisogno che si apra alcuna maschera, mi basta una controllo che mi fissa il record che non verra' piu' toccato. Se, invece, si decide di rateizzare allora ho bisogno di tenere traccia dei rateizzi e delle loro scadenze. Quindi vorrei poter entrare nella posizione del cliente cliccare sull'avviso e aprire il rateizzo per inserire i dati ogni volta che vengono fatti i pagamenti.
    Nella maschera dei rateizzi io vorrei che ogni volta che pago una rateizzo e lo inserisco nella riga del foglio dati questo si vada a decurtare dall'importo totale dovuto, in maniera tale che tengo sotto controllo il residuo del debito ancora in essere con l'erario. Quello che non riesco a fare credo sia dovuto al tipo di tabella o di maschera che ho costruito. Come detto ho costruito per i rateizzi una maschera in foglio dati. Quindi visualizza le righe corrispondenti ai record tutti con ID relativi a quel singolo avviso. Quindi da quello che mi sembra di avere capito avro' tante righe corrispondenti alle rate e i quali si appoggiano alla tabella rateizzi. Quindi penso che il problema sia che quando inserisco il pagamento, per esemipo, di tre rate indicandole nel campo impostapagata di tre righe diverse aventi pero' lo stesso ID di chiave primaria questa tenga conto soplo dell'importo inserito in un campo e cioe' il primo.
    infatti inserendo un controllo casella di testo ed inserendo la formula importo (cioe' il totale dell'avviso) - imposta pagata il risultato che restituisce e' la diferenza tra il totale e solo il primo pagamento inserito nella prima riga del foglio dati.

    Scusa se sono stato un po' lungo ma sto cercando di spiegarti al meglio
  • Re: CAMPO CALCOLATO SU MASCHERA

    Ho cercato di spiegarti la logica corretta, e ti ribadisco che come la stai applicando è Errata.
    Il pagamanto in Unica Soluzione è a tutti gli effetti un Pagamento e deve finire in Tabella Pagamenti(Rateizzi), ho capito che tu non hai fatto così... ma ti invito a riflettere che non è sensato dover considerare 2 modfalità differente di calcolo del Saldo, cosa che ora saresti obbligato a fare.
    Quindi, per come ho cercato di esporti con la logica usuale, se in Avvisi hai il Totale ed i pagamenti(tutti) li hai , per ricavare il Residuo devi semplicemente fare:
    
    Residuo=Totale-Dsum("Importi","TabPagamenti/Rateizzi","IdAvviso=" & Me![Avviso])
    Se invece gestirai i Pagamenti in 2 modi differenti dovrai implementare una logica differenziata.
  • Re: CAMPO CALCOLATO SU MASCHERA

    Si si, avevo accettato fin dall'inizio il tuo consiglio e che avevo impostato male io la logica. Su questo non c'erano dubbi. Infatti mi hai dato la soluzione del problema.
    Grazie
  • Re: CAMPO CALCOLATO SU MASCHERA

    Niente da fare ho inserito la formula che mi hai scritto ma mi viene restituito un valore Null.
    provando e riprovando ho visto che mi funziona solo una parte della formula: =DSum("importoimposta";"rate") dove importoimposta e importo sono' campi collegato alla query della maschera . La seconda parte invece, che dovrebbe fissare l'IDnumeroavviso non funziona.
    Ho inserito la formula nel generatore espressioni di un controllo casella di testo inserito nella maschera smsrateizzi
  • Re: CAMPO CALCOLATO SU MASCHERA

    Ciao, come ti dicevo non riesco a far funzionare la formula. Non ho assolutamente dimestichezza con questo.

    Ho inserito la formula all'interno del generatore di espressioni del controllo che dovrebbe contenere la somma, ma niente da fare.
    Ho provato a cancellare la parte della formula che dovrebbe assegnare l'ID che seleziona il range di record e in questo caso fa la somma ma ovviamente di tutti i dati contenuti nel nome campo di quella tabella.
    questa e' la formula che mi hai indicato tu: Residuo=Totale-Dsum("Importi","TabPagamenti/Rateizzi","IdAvviso=" & Me![Avviso])
    io l'ho cambiata, ho tolto "Residuo" e ho lasciato solo = perché la formula l'ho inserita nel generatore di espressioni che si riferisce gia' al controllo. poi invece di totale ho scritto importo che e' il campo nella maschera che contiene l'importo totale - Dsum invece di importi ho scritto importopagato che e' il campo che contiene il pagamento fatto poi ho inserito il riferimento alla tabella rate, poi ho inserito IDnumeroavviso che e' l'identificativo univoco degli avvisi e poi & me! invece di avviso ho inserito il nome della mia maschera che contiene i rateizzi e ha un IDnumeroavviso. Praticamente la formula esatta di come l'ho scritta nel generatore di espressioni e' la seguente:

    =importo-Dsum("importopagato","rate","IDnumeroavviso=" & Me![smsrateizzi]) (invece delle virgole ho dovuto mettere il ; perché mi dava un errore
Devi accedere o registrarti per scrivere nel forum
8 risposte