Newsgroup: it.comp.appl.access
Titolo: media progressiva

In Access 2000, la tabella l'ho chiamata "ROSSO".
Con una query di selezione ho ottenuto il seguente campo:
Campo A
      2
      5
      4
      8
      6
      3
Adesso, (nel Campo B), vorrei ottenere la media progressiva del Campo
A e cioč:
Campo A                                              Campo B
      2
      5                 2 + 5 =   7 : 2 =                 3,50
      4                 7 + 4 = 11 : 3 =                 3,66
      8               11 + 8 = 19 : 4 =                 4,75
      6               19 + 6 = 25 : 5 =                 5,00
      3               25 + 3 = 28 : 6 =                 4,67
C'č qualcuno in grado di aiutarmi?
Grazie.

 ha scritto nel messaggio
news:3us_9.67440$ZE.18...@twister2.libero.it...

Se la chiave primaria della tabella ROSSO si chiama CampoChiave.
Se la tua query di selezione, oltre a contenere il CampoA di cui vuoi la
media progressiva, contiene anche il campo CampoChiave.
In un modulo del tuo database inserisci la seguente funzione:
Function MediaProgr(KeyName As String, KeyValue, _
FieldNameToGet As String, NomeQuery As String) As Double
Dim RS As DAO.Recordset
Dim Conta As Long
MediaProgr = 0
On Error GoTo Err_MediaProgr
Set RS = CurrentDb().OpenRecordset(NomeQuery, dbOpenDynaset)
Select Case RS.Fields(KeyName).Type
    Case DB_INTEGER, DB_LONG, DB_CURRENCY, DB_SINGLE, _
        DB_DOUBLE, DB_BYTE
        RS.FindFirst "[" & KeyName & "] = " & KeyValue
    Case DB_DATE
        RS.FindFirst "[" & KeyName & "] = #" & KeyValue & "#"
    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
    MediaProgr = MediaProgr + RS(FieldNameToGet)
    Conta = Conta + 1
    RS.MovePrevious
Loop
MediaProgr = MediaProgr / Conta
Set RS = Nothing
Bye_MediaProgr:
    Exit Function
Err_MediaProgr:
    Resume Bye_MediaProgr
End Function
Creati una query basata sulla tua query di selezione e chiamala Query1; in
query1 inserisci un campo calcolato in questa maniera:
CampoB: MediaProgr("CampoChiave";[CampoChiave];"CampoA";"Query1")
Naturalmente, se la query che vai a creare non si chiama Query1, dovrai
modificare di conseguenza il nome della query nel richiamo della funzione.
La funzione fa riferimento alla libreria Microsoft DAO, quindi, se usi una
versione di Aceess successiva ad Access 97, nel tuo database inserisci i
riferimenti a tale libreria.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 wrote in message
Udt_9.66403$YG2.1...@twister1.libero.it...


 rudi
[CUT]
Scusami rudi, non me ne volere,
ma per ringraziare il sempre presente (e molto gentile) Roberto
non potresti la prossima volta quotare in modo corretto e magari cuttare
tutta la parte di messaggio riportata sotto?
Grazie ( e ti prego non prendermi x il rompi.... di turno ),
Alex

 rudi
Esattamete ciò che hai sopra esposto.
In questo Ng (come in molti altri) è apprezzato il fatto che le risposte ai
msg avvengano dopo la parte riportata (quotata) del messaggio.
Questo permette in maniera univoca di sapere sempre dove andare a cercare le
nuove parti di msg.
A.e. nella tua risposta a Roberto avevi scritto subito in cima al msg e
riportato integralmente il testo del msg di Roberto , il che oltre ad
appesantirlo (per motivi che ti puoi ben immaginare) comporta che una
persona abituata a leggere le risposte in fondo non abbia (almeno di primo
acchito) visto niente nel tuo messaggio in reply...
Cmq poco male, è soltanto una questione di abitudine...
Buon inizio settimana,
Alex