Newsgroup: it.comp.appl.access
Titolo: Somma per mese

Ciao a tutti
Ho un problemino che non riesco a risolvere ma penso che per voi esperti
sarà uno scherzo.
Sotto ho fatto un copia/incolla di una serie di record restituiti da una
query. Avrei necessità di sommare "SommaDiTOTALE" per mese/anno presente in
"DATA" ed avere quindi il totale mese per mese.
Ho provato in vari modi ma, da profano quale sono, non ho avuto il risultato
desiderato.
Ringrazio per l'aiuto e un saluto a tutti.
Claudio
   IDTol TOL DATA SommaDiTOTALE
      1 TWICE 23/05/2002 ? 178
      1 TWICE 24/05/2002 ? 163
      1 TWICE 06/06/2002 ? 180
      1 TWICE 11/06/2002 ? 144
      1 TWICE 17/07/2002 ? 151
      1 TWICE 22/07/2002 ? 179
      1 TWICE 20/08/2002 ? 228
      1 TWICE 22/08/2002 ? 140
      1 TWICE 27/08/2002 ? 41
      1 TWICE 03/10/2002 ? 366
      1 TWICE 14/10/2002 ? 109
      1 TWICE 21/10/2002 ? 174
      1 TWICE 07/11/2002 ? 376
      1 TWICE 28/11/2002 ? 19
      1 TWICE 02/12/2002 ? 379
      1 TWICE 09/12/2002 ? 356
      1 TWICE 11/12/2002 ? 493
      1 TWICE 16/12/2002 ? 145
      1 TWICE 17/12/2002 ? 354
      1 TWICE 23/12/2002 ? 178
      1 TWICE 07/01/2003 ? 47
      1 TWICE 10/01/2003 ? 138
      1 TWICE 21/01/2003 ? 229
      1 TWICE 30/01/2003 ? 177
      1 TWICE 03/02/2003 ? 234
      1 TWICE 13/02/2003 ? 375
      1 TWICE 17/02/2003 ? 110
      1 TWICE 24/02/2003 ? 91
      1 TWICE 25/02/2003 ? 581
      1 TWICE 13/03/2003 ? 43
      1 TWICE 04/04/2003 ? 74
      1 TWICE 09/04/2003 ? 186
      1 TWICE 10/04/2003 ? 247
      1 TWICE 11/04/2003 ? 450

 Claudio
Sě, ci sono vari modi. Puoi dichiarare un array corrispondente ai mesi,
far scorrere un recordset nella query ( rs.open, ecc., ecc., Do, ...,
ecc., ecc., rs.movenext, loop until rs.EOF) ed aggiungere ogni volta
rs("somma di totale") alla componente dell'array che corrisponde al mese
di rs("data"). Per far ciň devi spezzare la data ed estrapolare il mese:
l'istruzione da usare č 
mese=val(mid$(rs("data"),4,2)))
Se hai problemi ad implementare tutto ciň, scrivi pure.
In bocca al lupo,
          GS
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

       ...
Se ti capisco bene puoi provare con una query di
ragruppamento dove usi un campo
Format(DATA;"aaaamm")
con la funzione Ragruppamento è SommaTOTALE con la
funzione Somma. Il codice SQL è circa:
SELECT IDTol, TOL, Format(DATA,"yyyymm"), Sum(SommaDiTOTALE)
FROM TuaTabella
GROUP BY IDTol, TOL, Format(DATA,"yyyymm")
-- 
HTH
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

"Giulio Simeone" <viandan...@TOGLIyahoo.it> ha scritto nel messaggio
news:c6dhts$air$1...@news.newsland.it...

Problemi? .... Una marea. Per essere chiaro non ho capito praticamente
nulla. Mi spiace.
Sono molto ingnorante in materia. Mi sa che devo essere preso per mano e
accompagnato a scuola.
Se hai ancora voglia ogni aiuto č molto gradito.
Grazie ancora
Claudio

 ha scritto nel messaggio
news:c6djh1$arub7$1...@ID-46617.news.uni-berlin.de...

Come scritto anche a GS sono molto ingnorante in materia e ho provato
copiare il codice SQL che hai scritto (mettendo il nome della query di
origine in seconda riga) ma non dà il risultato richiesto.  Sicuramente ho
fatto qualche castroneria.
Grazie
Claudio

 Claudio
Ok, evidentemente hai appena iniziato ad utilizzare Access ... quindi mi
calerň nel ruolo di maestro! Ti scrivo il codice che devi utilizzare e
cerco di spiegarti i concetti che ne sono alla base, altrimenti č inutile.
Non ti ci abituare, eh, lo faccio solo perchč oggi č Sabato!!
Dunque, crei una maschera con molte caselle di testo: "Gennaio
2002","Febbraio 2002", ecc., e cosě via per tutti i mesi che ti servono.
Poi crei un pulsante: all'evento click su tale pulsante associ il seguente
codice:
private Sub pulsante_Click
dim mesi(12,4),mese,anno as integer
' a mesi (x,y) č associato il mese x dell'anno 200y.
dim cnn as adodb.connection
dim rs as new adodb.recordset
Set rs = New ADODB.Recordset
Set cnn = CurrentProject.Connection
rs.Open "Tabella", cnn, adOpenKeyset, adLockOptimistic
' in questo modo apri un recordset che all'inizio č posizionato sul primo
record della tabella; questo vuol dire, ad esempio, che rs("data")
restituisce la data contenuta nel primo record.Poi, con rs.movenext, si
sposta via via sui record successivi fino alla fine del file (rs.EOF).
do
mese=mid$(rs("data"),4,2)
' Questo vuol dire che da rs("data") vengono estrapolati due caratteri a
partire dal quarto, cioč le due cifre che individuano il mese.
anno=mid$(rs("data"),7,4)
mesi(mese,anno-2000)=mesi(mese,anno-2000)+rs("somma totale")
'Cosě, per esempio, se mese=4 e anno=2004, mese (4,4) viene incrementato
del campo "somma totale"
loop until rs.EOF
'Ora cominci a riempire tutte le caselle di testo della maschera:
Me![Gennaio 2000]=mesi(1,0)
Me![Febbraio 2000]=mesi(2,0)
' e cosě via, naturalmente ci sono modi piů veloci per riempire i campi ma
x ora fermiamoci qua.
Spero di esserti stato utile: comunque il mio consiglio č quello di
studiarti un po' meglio SQL e Visual Basic prima di avventurarti in
problemi di questo tipo. So benissimo che alcune aziende (non tutte, spero
non sia in tuo caso) mettono fretta; perň se uno impara le cose con calma
e partendo dalle basi, ciň non puň che giovargli nel lungo termine. Poi
puň anche essere licenziato dal padrone imbecille, ma comunque, anche
cercando di fare le cose in fretta, non andrebbe lontano.
In bocca al lupo!


Naturalmente ho scritto il codice in fretta e potrei aver commesso qualche
svista. Inoltre, non so se tu volevi l'output visualizzato su una maschera
oppure su un'altra tabella.
Per ulteriori dubbi scrivi pure.



Ti ringrazio molto per la disponibilità.
Spero di riuscire nell'impresa.
Per fortuna è una cosa per me e non ho pressione.
Nella mia ingnoranza pensavo fosse una cosa più semplice. Ma la semplicità è
data dalla conoscenza .... qui invece c'è il deserto.
Ciao
Claudio

"Giulio Simeone" <viandan...@TOGLIyahoo.it> ha scritto nel messaggio
news:c6e5u0$jer$1...@news.newsland.it...

In una maschera.
Claudio