[MS Access] CAMPO CALCOLATO CON FUNZIONE DSUM

  • Creatore Discussione Creatore Discussione RATTS71
  • Data di inizio Data di inizio

RATTS71

Nuovo Utente
12 Mar 2018
21
0
1
53
Ciao a tutti sto cercando invano di risolvere il seguente problema:

Ho due maschere VEDIAVVISI e RATEIZZI. la maschera VEDIAVVISI visualizza tutti i dati di un avviso incluso l'importo da pagare. In questa maschera c'e' un pulsante che apre la maschera RATEIZZI che si apre in fioglio dati visualizzando le varie righe corrispondenti al vario numero di rate che si devono pagare e che si riferiscono tutte allo stesso IDavvisi. In pratica per ogni avviso possono esserci x numero di rate. Le due maschere si appoggiano su una query di maschera.
Quello che vorrei fare e' inserire nella mascera RATEIZZI un campo calcolato che faccia la somma di tutte le rate pagate riferite a quel singolo avviso.
 
Non c'è bisogno di aprire un'altra maschera per vedere le varie rate relative all'avviso visualizzato nella maschera VEDIAVVISI basta aggiungere in questa una sottomaschera, che appunto puoi chiamare smRATEIZZI, dove la proprietà Visualizzazione predefinita è impostata a Maschere continue e che ha le proprietà Collega campi secondari e Collega campi master entrambe con il valore IDavvisi e nella sezione Piè di pagina maschera inserisci un campo testo dove nella proprietà Origine controllo scivi la formula =Somma(NomeCampoDaSommare).
Se alleghi il file forse è ancora più facile aiutarti.
 
Ultima modifica:
Ciao ho allegato le schermate. Come puoi vedere nella maschera smsrateizzi (inizialmente era una sotttomaschera)ci sono vari record ma che appartengono tutti allo stesso IDnumeroavviso e cioe' sono tutte rate relative a quell'avviso.
La mia necessita' e' proprio quella di fare eseguire somme parziali relative ad un certo tipo di record, nel mio caso relative ad un determinato numero ID di IDnumeroavviso per questo parlavo della funzione Dsum
 

Allegati

Il lavoro, secondo me, dovrebbere essere sviluppato in questo modo:

  1. Avere un maschera di riepilogo Avvisi con :
    • nella sezione Intestazione maschera inserire tutti i controlli che permettono qualsiasi filtro sui dati
    • nella sezione Corpo inserire una sottomaschera, creata a parte dove sono visualizzati tutti gli Avvisi e che permetterà già nella sezione Pià di pagina maschera di visualizzareil riepilogo dei vari importi.
  2. Una maschera per la gestione dell'Avviso dove saranno presente tutti i controlli che lo caratterizzano e una sottomaschera dove visualizzare tutti i Rateizzi relativi all'Avviso visualizzato e che permetterà già nella sezione Pià di pagina maschera di visualizzare il riepilogo dei vari importi.
  3. Una maschera per la creazione dei Rateizzi
  4. Una maschera per la gestione del singolo Rateizzo
ecco perchè se alleghi il file ti si può par vedere un'esempio.
 
Ciao, ho deciso di lasciare la struttura cosi' com'e' per problemi di tempo e poi perche' vorrei risolvere il problema. Come ti dicevo non riesco proprio a fare funzionare quella formula Dsum. La formula Dsum la inserisco nel generatore di espressione nel controllo della maschera smsrateizzi. La funzione dovrebbe sommare gli importi pagati per un dato IDnumeroavvisi e cioe' la funzione mi deve visulaizzare la somma relativa al numero di avviso che io richiedo e non sommare altri campi. Quindi devo inserire un criterio dinamico. Purtroppo non riesco a farla funzionare. Allego la formula che ho scritto
 

Allegati

La formula dovrebbe essere la seguente:
=DSum("[importopagato]";"[rate]";"[IDnumeroavviso]=" & [Forms]![vediavvisi]![IDnumeroavviso])
 
purtroppo non funziona, nel controllo associato mi restituisce un messaggio di errore
 
Ecco perchè ci vuole il file su cui lavori, è per rendersi effettivamente conto di quello che hai fatto in quanto la formula è grammaticalmente corretta!
 
Quello su cui stai lavorando e dove esiste questo controllo la cui Origine controllo è data dalla funzione DSum.
 
Comprimilo con un programma come winzip o winrar.
Se anche questo non bastasse scarica il file su un sito di condivisione file e poi inseririsci nel messaggio l'indirizzo che ti verrà rilasciato dopo averlo condiviso.
 
La soluzione è la seguente:
=DSum("[importopagato]";"[rate]";"[IDnumeroavviso]=" & [Maschere]![smsrateizzi]![IDnumeroavviso])
in quanto il il valore dell'IDnumeroavviso, che permette il corretto funzionamento della funzione DSum, deve essere legato al record selezionato attualmente nella maschera smsrateizzi.
 
perfetto adesso funziona !!!! Grazie

Posso approfittare delle tue capacita' e del tuo tempo ancora una volta ? quando dallla maschera vedi avvisi clicco il pulsante vedi rateizzo va tutto bene. I record visulizzati corrispondono all'IDnumeroavviso desiderato. Ma se voglio aggiungere un nuovo record o inserirne uno nuovo non riesco ad assegnargli automaticamete all'apertura della maschera smsrateizzi l'IDnumeroavviso della maschera vediavvisi
 
Basta inserire il seguente codice :

Private Sub Form_Load()
Me.IDnumeroavviso = Form_vediavvisi.IDnumeroavviso
End Sub

nell'evento caricamento della maschera smsrateizzi.
Come ti avevo detto precedentemente però ci sino molte carenze nel tuo database, le cose più importanti sono:
  • le tabelle non verificano mai la possibilità che vengano creati errori (es. la proprietà Indicizzato del campo codicefiscale è impostata a Sì (Duplicati ammessi) anzichè Sì (Duplicati non ammessi) che impedirebbe appunto la possibilità che qualcuno per errore lo possa duplicare, cosa gravissima)
  • la stessa problematica si verifica per il campo numeroavviso nella tabella avvisi
  • la stessa problematica si verifica nella tabella rate dove però per impedire doppioni dovrebbe essere creato un indice univoco sulla combinazione dei due campi IDnumeroavviso e numerorata
  • il campo IDanagrafica nella tabella rate è inutile in quanto esiste già nella tabella avvisi
  • non viene mai impostata la proprietà Richiesto dei campi per obbligare l'inserimento del relativo valore.
  • ecc...
 
Ti ringrazio davvero tanto per l'aiuto e anche per i consigli. Effettivamente e' da solo 3 settimane che sto usando access e sono consapevole delle mie carenze che sto imparando "sul campo" anche perche' non ho trovato un manuale davvero utile, nel senso che quelli che ho letto sono spiegati tralasciando proprio i passaggi pratici iniziali.
 

Discussioni simili