Newsgroup: it.comp.appl.access
Titolo: Campo progressivo in una query.

Salve a TUTTI,
ho seguito passo passo le istruzioni riportate nel sitocomune:
2.11 Come si può ottenere il totale progressivo di un campo in una query
Ho creato il modulo come indicato, cambiando il nome della tabella, ho
aggiunto il riferimento a Microsoft DAO 3.6 e la query mi ha funzionato in
un database dove la chiave primaria era un campo testo.
Al contrario, NON riesco a farla funzionare in una database dove la chiave
primaria è numerica. (Nel caso specifico si tratta di un campo contatore)
Nel campo calcolato mi da sempre zero.
Avete dei suggerimenti?
Grazie a TUTTI.
Fabio


Hai salvato la query nel db?
-- 
Ciao
Geppo 

 Geppo
Si, l'ho salvata.
Aggiungo che in prima battuta prima di aggiungere Microsoft DAO 3.6 mi dava
un errore del codice, poi, immagino/credo come scritto nel codice, va in
esecuzione, ma il risultato è sempre zero.
Grazie Fabio


Posta qualche info in +
ad esempio il codice ove richiami la funzione, magari hai fatto qualche 
errore li; il nome della query ecc.
-- 
Ciao
Geppo 

 Geppo
Questo che segue è il codice, copiato pari pari dall'esempio, ovviamente
cambiando il nome della tabella:
Function TotProgrQry(KeyName As String, KeyValue, _
FieldNameToGet As String, dati As String)
Dim RS As DAO.Recordset
On Error GoTo Err_TotProgrQry
TotProgrQry = 0
Set RS = CurrentDb().OpenRecordset(dati, 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
    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 Function
Questa è la stringa nel campo calcolato della query, anche qui adattando i
nomi degli oggetti:
Totale: CDbl(TotProgrQry("progCall";[progCall];"tariffakm";"Calcola"))
Grazie Fabio


Calcola che cos'è?
Calcola deve essere il nome della query e/o tabella che viene passata quale 
argomento, il cui valore sara' passato alla varibile "dati" che tu hai 
cambiato credendo di modificare il nome della tabella.
-- 
Ciao
Geppo 

 Geppo
Io ho cercato di stare aderente alle indicazioni che ho trovato nel
sitocomune, che dicono per quanto rigurada la query:
----------------------------------------------------------------------------
-----
Nella 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.
----------------------------------------------------------------------------
---------------------
Peraltro, come ho già detto, con la chiave primaria di tipo testo, usando le
stesse condizioni, mi funziona, è solo in questo caso con la chiave numerica
che non funziona.
Fabio


Io ho provato ricreando il tutto ed inserendo il codice da te postato è 
funziona.
ProgCall:  chiave primaria tipo contatore
Calcola:    nome query
tariffakm: campo che contiene i dati da sommare progressivamente
-- 
Ciao
Geppo

 Geppo
Ok, Non capisco cosa mi sfugga, cmq Grazie della conferma che mi hai dato.
Fabio


Qui puoi scaricare il database con cui ho provato, magari puo' esserti utile 
per capire.
http://www.divshare.com/download/3147389-6ce
-- 
Ciao
geppo 

 geppo
Ok, Grazie mille lo scarico e ci riprovo.
Grazie ancora e Buon Natale
Fabio