Trasferire variabili calcolate in VBA in campi di tabelle

di il
9 risposte

Trasferire variabili calcolate in VBA in campi di tabelle

Buongiorno a tutti, sono nuovo del forum, ma anche di access.

Ho lavorato per molti anni con excel ed il suo vba per realizzare progetti meccanici.

Oggi sorge l’esigenza di gestire i diversi progetti collegandoli ai diversi clienti e recuperare lo storico dei progetti fatti. Credo che access possa essere lo strumento giusto, ho letto due libri che mi hanno permesso di iniziare a capire la filosofia e la struttura di access. Sono riuscito a realizzare tabelle, query e report( ancora molto spartani) che rispecchiano le mie esigenze. Ho visto che vba di access gestisce calcoli trigonometrici e matematici. Sono riuscito a leggere i valori contenuti in campi di una tabella ed elaborarli in vba con la matematica necessaria. Quello che non ho capito è con quale sintassi posso scrivere in un campo di una tabella la variabile che ho appena calcolato in vba. Allego piccolo esempio semplificato del problema. dovrei scrivere il valore calcolato “calcoloMuTot nel campo Mu_tot della tabella ”tblMtorc".

ho scritto il codice qui sotto sfruttando quello che ho letto nei due libri citati prima, se fosse sbagliato anche il metodo di lettura delle variabili Mu_10,Mu_20, interasse; scrivete la soluzione migliore secondo voi

Grazie a chi mi potrà rispondere

Option Compare Database
' Danilo 27/12/2022
' provo a leggere e scrivere in una tabella
Sub LeggoScrivo()
Dim db As Database
Dim rst As dao.Recordset
Dim leggoMu10 As Integer, leggo_Mu20 As Integer
Dim calcoloMuTot As Integer
Set db = CurrentDb
Set rst = db.OpenRecordset("tblMtorc")
Do While Not rst.EOF
   leggoMu10 = rst.Fields("Mu_10").Value          ' leggo valore di Mu 10 dalla tabella
   leggoMu20 = rst.Fields("Mu_20").Value          ' leggo valore di Mu 20 dalla tabella
   leggoInterasse = rst.Fields("Interasse").Value ' leggo valore di interasse dalla tabella
   calcoloMuTot = (leggoMu10 + leggoMu20) * leggoInterasse / Sqr(leggoMu10) ^ 2
   Debug.Print calcoloMuTot
   rst.Fields("Mu_tot").Value = calcoloMuTot     ' scrivo Mu calcolato nella tabella NON FUNZIONA nemmeno questo
  
   rst.MoveNext   'incrementa la riga dei dati cosi posso calcolare tutti gli interassi
Loop
   rst.Close
End Sub

9 Risposte

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    Ciao.

    Se vuoi scrivere un valore su un campo, uno dei metodi è questo

    With rst
    .AddNew
    
    !nome campo = nome variabile
    
    .Update
    
    End With
  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    Se invece vuoi modificare un valore già esistente in un campo, prima devi individuare il record ed il campo corrispondente e poi modificarlo

    Case "salva modifica"
    
    If IsNull(Me.esito) Or (Me.esito) = "" Then  ' verifica se il valore è null o vuoto altrimenti access si inchioda.'
                MsgBox "Attenzione. Devi inserire esito che vuoi aggiornare." 
                    Exit Sub
                    End If
        
    nome_esito = Me.esito    'assegnazione della variabile con il valore del controllo'
    
    DoCmd.SetWarnings False  'disabilita i messaggi di sistema, tipo "Verranno aggiornati numero 10 record"'
    selezione = Me.Elenco29  'è una combo box, dove ricavo il numero id per individuare il record da modificare'
    
    Me.Comando40.Enabled = False  ' serve nel mio programma, non per quello che serve a te'
    asql = "UPDATE esiti SET esiti.esito = " & "'" & nome_esito & "'" & "WHERE (((esiti.idesito)=" & selezione & "))" 'dichiara la query di aggiornamenoto per il record ed il campo giusto'
    
    DoCmd.RunSQL asql     'esegue la query ed aggiorna il campo'
    nome_esito = DLookup("[esito]", "esiti", "idesito=" & selezione) ' non ti serve è un controllo che serve a me'
    
    
    ' tutto il resto non ti serve 
    Me.Comando33.Caption = "Salva"
    Me.esito = Me.Elenco29.Column(1)
    
    Me.Refresh
    Me.esito = ""
    Me.Comando33.Enabled = False
    Me.Elenco29.Locked = False '
    
    
    rst.Close  ' per sicurezza chiudi il collegamento'

    Ho lasciato anche altro codice, perchè potrebbe darti spunti su altri comandi che forse non conosci.

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    Ciao fratac

    grazie per il suggerimento, nell'immagine sopra il risultato di cui avevo bisogno e che mi servirà anche in molti altri calcoli.

    ho solo dovuto cambiare “rst.Addnew”   con “rst.Edit”  (ho cercato tra le opzioni disponibili con rst.) altrimenti i miei calcoli li inseriva a partire dalla riga 7.

    per capire cosa hai scritto nel tuo secondo intervento delle 16:23 mi servirà una mezza giornata. come dicevo sono  MOLTO principiante di access. grazie ancora

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    ciao fratac

    grazie per il suggerimento, nell'immagine sopra il risultato di cui avevo bisogno e che mi servirà anche in molti altri calcoli.

    ho solo dovuto cambiare “rst.Addnew”   con “rst.Edit”  (ho cercato tra le opzioni disponibili con rst.) altrimenti i miei calcoli li inseriva a partire dalla riga 7.

    per capire cosa hai scritto nel tuo secondo intervento delle 16:23 mi servirà una mezza giornata. come dicevo sono  MOLTO principiante di access. grazie ancora

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    09/01/2023 - Danilo63 ha scritto:


    ciao fratac

    grazie per il suggerimento, nell'immagine sopra il risultato di cui avevo bisogno e che mi servirà anche in molti altri calcoli.

    ho solo dovuto cambiare “rst.Addnew”   con “rst.Edit”  (ho cercato tra le opzioni disponibili con rst.) altrimenti i miei calcoli li inseriva a partire dalla riga 7.

    per capire cosa hai scritto nel tuo secondo intervento delle 16:23 mi servirà una mezza giornata. come dicevo sono  MOLTO principiante di access. grazie ancora

    In realtà c'è tanto codice che non ti occorre. Ma nella fretta ho lasciato i riferimenti ai controlli, che alla fine sono listbox, combobox e pulsanti che abilito e disabilito per evitare in modo semplice e veloce che l'operatore faccia operazioni che per essere controllate necessiterebbero di molto ulteriore codice.

    Per quanto riguarda .edit, occhio al record che vai ad aggiornare. Prima lo devi individuare. A meno che non li vai ad aggiornare tutti in modo ciclico.

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    Si certo, ho potuto verificare che .edit fa quello che mi serve. purtroppo io avevo anche allegato precedentemente due piccole immagini della mia mini tabella per far capire alle persone cosa mi serviva. purtroppo però nel le vedo. provo ancora a inserirla qui sotto.

    grazie di nuovo per il tuo interesse

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    [quote](ho cercato tra le opzioni disponibili con rst.)[/quote]

    Non è un metodo per imparare a fare quello che serve.

    Sarebbe meglio un approccio più “didattico”. Ovvero studia (dai libri) la teoria e applicala pian piano alla pratica, un po' come hanno fatto tutti.

    E' un consiglio spassionato … ovviamente libero di andare a caso …

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    buongiorno oregon

    frequento pochissimo i forum e quindi non credo di essere abituato a questi tipi di commenti. potrebbe farle piacere sapere che non sono mai andato a caso nei progetti che intraprendo, non rientra nella mia formazione meccanica e ingegneristica. forse le è sfuggito quello che dissi all'inizio:

    "Buongiorno a tutti, sono nuovo del forum, ma anche di access.Ho lavorato per molti anni con excel ed il suo vba per realizzare progetti meccanici.Oggi sorge l’esigenza di gestire i diversi progetti collegandoli ai diversi clienti e recuperare lo storico dei progetti fatti. Credo che access possa essere lo strumento giusto, ho letto due libri che mi hanno permesso di iniziare a capire la filosofia e la struttura di access. Sono riuscito a realizzare tabelle, query e report".

    devo riuscire a coniugare il vba di excel, e cioè i risultati che derivano da circa 14 pagine di formule meccaniche/fisiche/strutturali, che ho già sviluppato da tempo, con la capacità di access di mantenere collegati i dati inseriti in più tabelle che devono confluire in vba per i calcoli, con i dati dei clienti che commissionano la progettazione, con i dati in output dal vba. i libri che ho letto sono molto orientati alla gestione ed alla congruità del dato in entrata nel database, per poterlo sommare, moltiplicare analizzare per inventari, cosa che a me non serve. io devo prendere per buoni tutti i dati inseriti, saranno solo i calcoli a validarne la dimensione e la portata all'interno di una applicazione meccanica.

    se può consigliare un libro che approfondisca, in modo chiaro, l'interazione tra dati calcolati in vba e la lettura/scrittura da/in tabelle access mi potrebbe interessare, grazie

  • Re: Trasferire variabili calcolate in VBA in campi di tabelle

    Perché questa risposta piccata? Non volevo dire altro che bisogna, come in tutti i campi, studiare prima di usare strumenti che non si conoscono. Mi sembra lapalissiano e per nulla offensivo.

    Ho capito che sei “nuovo” di Access, non c'è bisogno di dirlo o addirittura ripeterlo, si comprende dalla domanda e dall'approccio allo strumento, ma questo non vuol dire non potere accettare consigli e comunque non è mai stato considerato un alibi.

    Il fatto stesso di usare il DB come fosse Excel indica che devi ancora assorbire le basi del nuovo strumento perché un DB ed Excel sono cose completamente diverse (dimentica Excel se vuoi lavorare correttamente con i DB). Prova ne è il fatto che vuoi memorizzare in una tabella dove ci sono dei dati, i risultati di una operazione tra gli stessi dati, cosa del tutto insensata in un DB (ma comprensibile per chi viene da Excel).

    E il dover usare il “suggerimento” (rst.) per accedere ai metodi del Recordset corretti, indica un procedere “a tentoni” (sicuramente lontanissimo da una formazione ingegneristica). Nulla di offensivo comunque, solo indicazioni realistiche per poter affrontare correttamente le questioni con i DB.

    Un libro di base sulla progettazione e uso dei DB e uno su Access per chi inizia, vanno benissimo.

Devi accedere o registrarti per scrivere nel forum
9 risposte