Queries |
2.11 Come si può ottenere il totale progressivo di un campo in una query? |
Roberto |
In un modulo del database memorizzare la seguente funzione:Function TotProgrQry(KeyName As String, KeyValue, _ FieldNameToGet As String, NomeTabella As String) Dim RS As DAO.Recordset On Error GoTo Err_TotProgrQry TotProgrQry = 0 Set RS = CurrentDb().OpenRecordset(NomeTabella, dbOpenDynaset) ' Trova il record corrente Select Case RS.Fields(KeyName).Type ' La chiave è Numerica? Case DB_INTEGER, DB_LONG, DB_CURRENCY, DB_SINGLE, _ DB_DOUBLE, DB_BYTE RS.FindFirst "[" & KeyName & "] = " & KeyValue ' La chiave è di tipo Data/ora? Case DB_DATE RS.FindFirst "[" & KeyName & "] = #" & Format(KeyValue, "mm/dd/yyyy") & "#" ' La chiave è di tipo 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 TotProgrQry = TotProgrQry + RS(FieldNameToGet) RS.MovePrevious Loop Set RS = Nothing Bye_TotProgrQry: Exit Function Err_TotProgrQry: Resume Bye_TotProgrQry End FunctionNella query crea un campo calcolato nel modo seguente: Totale: CDbl(TotProgrQry("IDMovimento";[IDMovimento];"Quantità";"Query1"))dove IDMovimento è la chiave primaria della tabella che contiene i dati, Quantità è il nome del campo di cui si vuole il totale progressivo e Query1 è il nome della query. La funzione di cui sopra fa riferimento alla libreria Microsoft DAO quindi, se usi una versione di Access successiva ad Access 97, devi aggiungere al database i riferimenti a Microsoft DAO 3.6 Object Library. Download: |