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 Function
Nell’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:
 
  TotProgressivoForm.zip (25Kb) MSAccess97 database


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.