Codice VBA per inserire campi calcolati

di il
8 risposte

Codice VBA per inserire campi calcolati

Sono di nuovo qua a chiedere la stessa cosa ma in modo sempre diverso.
Sono quello che vuole ricavare il bilancio poliennale della sua Associazione.
Come già sapete, per fare un bilancio di "CASSA" occorre sommare, per ogni nuovo anno, il residuo di "CASSA" dell'anno precedente (che nel nuovo anno chiameremo "RIPORTO") con le "ENTRATE" dell'anno corrente, e sottrarre le nuove "USCITE".
Al momento dispongo di una tabella "MOVIMENTI" in cui ho sistemato le "ENTRATE", e le "USCITE" per ogni anno e di una maschera "M_Sintesi" che alimenterà la tabella.
Prima di visualizzare i dati debbo però, prima di tutto, completare la tabella aggiungendo il RIPORTO e la CASSA come dicevo poc'anzi, e che al momento sono solo dei campi vuoti.
Si tratta di calcolare la (CASSA) e passarlo come (RIPORTO) al record successivo. Mi hanno detto giustamente che è lavoro da VBA, ma mi manca proprio la conoscenza della sintassi e della procedura. La logica ce l'ho tutta in testa.
Vi chiedo di assistermi per favore per avere le istruzioni base, non la soluzione. Un sacchettino insomma dove c'è dentro tutto quello che occorre (puntatori, assegnazioni, dichiarazioni, loop, ecc), anche se tutto mischiato non fa niente. Sono arrivato praticamente alla fine di un lavoro certosino e non vorrei abbandonarlo proprio alla fine.
Grazie a chi mi risponderà e anche a chi non mi ha mai risposto.
Antonio Cuomo

8 Risposte

  • Re: Codice VBA per inserire campi calcolati

    Da quello che leggo mi sembra hai bisogno di imparare la sintassi del vba.

    Il modo migliore e' leggersi un manuale.

    In rete ho trovato questo :

    Non l'ho letto ma dall'indice mi sembra vada bene per iniziare

  • Re: Codice VBA per inserire campi calcolati

    A volte la soluzione è dietro la porta ed invece andiamo a tentoni.
    Vado a berlo e poi ci risentiamo.
    Grazie
  • Re: Codice VBA per inserire campi calcolati

    Mio caro Bomberdini, non ci crederai ma l'ho letto quasi tutto.
    La confusione mi è aumentata anche perchè ho visto altri esempi in giro che usano comandi sempre diversi tipo bookmark, clone ecc.

    Io, molto semplicemente, ho solo bisogno di accedere alla mia tabella, modificarla e poi risalvarla.
    a modificarla credo di essere bravo ma non conosco la sintassi dei comandi per aprire e chiudere il lavoro.
    Mi puoi aiutare in questo senso?

    Di nuovo grazie e ciao.
    antonio
  • Re: Codice VBA per inserire campi calcolati

    antocuomo ha scritto:


    Mi puoi aiutare in questo senso?
    certo
    http://forum.masterdrive.it/access-79/access-leggere-scrivere-dati-nelle-tabelle-tramite-vba-dao-13176/
  • Re: Codice VBA per inserire campi calcolati

    Mio caro Bomberdini, non sai quanta gioia mi ha dato leggere la tua risposta, non tanto per la sua efficacia che non ho ancora avuto modo di approfondire in quanto sono a quest'ora, data la mia età un pò insonnolito, quanto per la precisione e l'interpretazione che hai dato alla mia richiesta che andava ben oltre la mia domanda.
    Non ti nascondo che era proprio quello, lo spirito della mia richiesta, anche se non si evidenziava, e cioè quello di ricevere anche, e addirittura soprattutto un lezione teorica sulle metodologie di aggressione di questi problemi.
    Purtroppo, anche tuoi colleghi questa pratica non la seguono, e spesso conducono il can per l'aia. Probabilmente perché non tutti hanno le stesse capacità e a volte sensibilità.
    Non so quanto tempo potrò dedicare in questi giorno al mio lavoro perché ho tanto da fare, con la salsa dei pomodori e con una questione di multe di mia figlia, ma spero di salutarti prima di ferragosto.
    Un abbraccio.
    antonio cuomo
  • Re: Codice VBA per inserire campi calcolati

    Un concetto fondamentale dell informatica e' NON REINVENTARE LA RUOTA

    Da sempre lo scopo e' quello. Da qualche anno a questa parte in maniera ancora piu' spinta con l'avvento dei pattern, e quindi tutto il design basato sul pattern.

    Avrei potuto scriverti io come interagire con tabelle tramite vba ma,

    1) non lo uso spesso poiche uso altri strumenti e quindi magari ti dicevo qualche castroneria

    2) cosa ancora piu' importante, qualcuno ha gia spiegato anche abbastanza bene in quell articolo linkato come fare quello che tu chiedi. Quindi per il concetto della ruota sopracitato mi sembra piu' giusto passarti i riferimenti e non riscriverlo io

  • Re: Codice VBA per inserire campi calcolati


    Eureka, è stato subito un successo.
    La mia macro "su caricamento" della maschera ha lanciato la routine (eseguiCodice) e mi ha calcolato perfettamente i campi come desideravo.
    Un solo problema: poichè avevo messo un MsgBox per monitorare l'andamento del loop, ho scoperto che a fine file non esce dal loop, ma se lo gira ben tre volte prima di passare la mano alla visualizzazione dei dati in maschera. E lo fa ripartendo sempre dal primo record.
    Una seconda cosa: in effetti io vorrei elaborare i dati che sono in una query e non in una tabella; se gli do la query da elaborare, non me la lavora.
    Ti passo il codice, non vorrei aver messo dentro qualche rospo.

    Public Sub Bilanci() ' Calcola i bilanci annuali.

    Dim DBCOrrente As DAO.Database
    Dim rsBil As DAO.Recordset
    Dim rip_prec As Integer

    Set DBCOrrente = CurrentDb
    Set rsBil = DBCOrrente.OpenRecordset("Q3", dbOpenDynaset)

    Do Until rsBil.EOF
    rsBil.Edit ' abilita la modifica dei dati del record
    MsgBox rsBil.Fields("anno_contabile")

    rsBil.Fields("riporto") = rip_prec
    rsBil.Fields("TOT_E") = rip_prec + rsBil!Tot_E_5 + rsBil!Tot_E_Spo + rsBil!Tot_E_Ass + rsBil!ToT_E_Quo
    rsBil.Fields("cassa") = rsBil!TOT_E - rsBil!Tot_acc - rsBil!Tot_spesa ' Calcola la cassa
    rip_prec = rsBil!cassa ' Assegna il RIPORTO per l'anno successivo.
    rsBil.Update ' salva il record
    rsBil.MoveNext
    Loop

    rsBil.Close
    DBCOrrente.Close

    End Sub

    Ciao e grazie di tutto.
  • Re: Codice VBA per inserire campi calcolati

    Ho risolto in quel modo ogni problem; grazie per tutto.
    Antonio cuomo
Devi accedere o registrarti per scrivere nel forum
8 risposte