Forms |
3.51 Come si può ottenere il totale progressivo in una maschera/sottomaschera continua? |
Roberto |
In un modulo del database memorizzare la seguente funzione:Function CreaTotProgr(KeyName As String, KeyValue, NomeCampo As String) Dim RS As DAO.Recordset Dim Totale As Double Totale = 0 On Error GoTo Err_CreaTotProgr Set RS = CodeContextObject.RecordsetClone ' Cerca il record corrente. Select Case RS.Fields(KeyName).Type ' Il tipo dati della chiave è Numerica? Case DB_INTEGER, DB_LONG, DB_CURRENCY, DB_SINGLE, _ DB_DOUBLE, DB_BYTE RS.FindFirst "[" & KeyName & "] = " & KeyValue ' Il tipo dati della chiave è Data/ora? Case DB_DATE RS.FindFirst "[" & KeyName & "] = #" & Format(KeyValue, "mm/dd/yyyy") & "#" ' Il tipo dati della chiave è Testo? Case DB_TEXT RS.FindFirst "[" & KeyName & "] = '" & KeyValue & "'" Case Else MsgBox "ERRORE: Tipo dati della chiave non valido!" Exit Function End Select Do Until RS.BOF Totale = Totale + RS(NomeCampo) RS.MovePrevious Loop Bye_CreaTotProgr: ' Restituisci il risultato. CreaTotProgr = Totale Exit Function Err_CreaTotProgr: Totale = 0 Resume Bye_CreaTotProgr End FunctionNell’origine controllo di una casella di testo non associata inserita nel corpo della maschera/sottomaschera scrivere: =CreaTotProgr("IDMovimento";[IDMovimento];"Quantità")dove IDMovimento è la chiave primaria della tabella che contiene i dati e Quantità è il nome del campo di cui si vuole il totale progressivo. Nota La funzione di cui sopra fa riferimento alla libreria Microsoft DAO quindi, se si usa una versione di Access successiva ad Access 97 occorre aggiungere al database i riferimenti a tale libreria. Download: |