Valore calcolato in una tabella Access

di il
11 risposte

Valore calcolato in una tabella Access

Buongiorno a tutti,
ho un foglio Excel che devo replicare in Access per visualizzarlo in una maschera.
Nel foglio Excel la cella E1 è uguale a A1-B1-C1+D1 mentre la cella E2 è il calcolo di E1+A2-B2-C2+D2, la cella E3 è il calcolo di E2+A3-B3-C3+D3 e così via... come faccio a replicare queste formule in una tabella di Access?

Grazie a tutti
Allegati:
29619_b8eb703eebd3446719c0f9cce4918103.jpg
29619_b8eb703eebd3446719c0f9cce4918103.jpg

11 Risposte

  • Re: Valore calcolato in una tabella Access

    Devi davvero fare tutti questi calcoli?
    Vuoi davvero passare da Excel a Access?
    Consiglio di leggere prima questo
    https://support.microsoft.com/it-it/office/utilizzare-access-o-excel-per-gestire-i-dati-09576147-47d1-4c6f-9312-e825227fcaea

    In Access quello che hai chiesto (nel modo con cui lo hai esposto) ha poco o nulla senso. Devi prima avere i DATI nella tabella. Poi, piuttosto che usare i campi calcolati (mal visti dai programmatori della "vecchia guardia"), si usano le query per effettuare calcoli.
  • Re: Valore calcolato in una tabella Access

    Grazie OsvaldoLaviosa,
    la tabella che ho esposto è solo un esempio, il programma Access che sto creando ha una parte più complessa che alla fine popola una tabella in cui ho la necessità appunto di scrivere i dati nel campo relativo (MargineProg) seguendo la formula per calcolare il margine progressivo nei vari mesi su tre anni.
    Allegati:
    29619_28eac12caccaf43f05afa8252e47af72.png
    29619_28eac12caccaf43f05afa8252e47af72.png
  • Re: Valore calcolato in una tabella Access

    La difficoltà è quella di calcolare dalla seconda riga in poi il valore del campo precedente + la formula applicata al campo della prima riga nella colonna MargineProg
  • Re: Valore calcolato in una tabella Access

    Passi che hai già a monte un database "normalizzato" (che non conosciamo). Resta fermo il punto che i calcoli si effettuano sempre e comunque con le QUERY. I nuovi campi calcolati nelle query possono avere un nome personalizzato, quindi vale la regola generale di scrivere così in visualizzazione struttura query:
    NomeCampoComePreferisciTu: [CampoX] + [CampoY]
    e se devi fare altri calcoli servendoti del [NomeCampoComePreferisciTu], scriverai così:
    NomeCampoComePreferisciTu2: [NomeCampoComePreferisciTu] + [CampoZ]
  • Re: Valore calcolato in una tabella Access

    Premesso che Access non è Excel, comunque se devi effettuare un calcolo, fra i record tenendo presente il saldo progressivo, puoi iniziare leggendo questa discussione:
    https://forum.ialweb.it/forum_posts.asp?TID=16257064&title=risolto-campo-calcolato
  • Re: Valore calcolato in una tabella Access

    Grazie Willy! Dalla discussione che mi hai suggerito ho scritto questo codice VBA su un pulsante della maschera:

    Private Sub CalcolaProg_Click()

    Dim rstLeggi As ADODB.Recordset
    Dim MargineProg As Long
    Set rstLeggi = New ADODB.Recordset
    Dim rstScrivi As ADODB.Recordset
    Set rstScrivi = New ADODB.Recordset
    MargineProg = 0
    rstLeggi.Open "SELECT ID_Anno, Calcolato FROM T_Calcoli_Prog order by ID_Anno; ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    While Not rstLeggi.EOF
    MargineProg = MargineProg + rstLeggi!Calcolato
    rstScrivi.Open "Update T_Calcoli_Prog set MargineProg = " & MargineProg & " where ID_Anno = " & rstLeggi!ID_Anno & " ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    rstLeggi.MoveNext
    Wend
    rstLeggi.Close

    End Sub

    Funziona, l'unica cosa è che mi arrotonda i decimali nella colonna del margine progressivo (MargineProg)
    Allegati:
    29619_5e220a4b6b02156a23e7431b1fee695c.png
    29619_5e220a4b6b02156a23e7431b1fee695c.png
  • Re: Valore calcolato in una tabella Access

    Ovviamente, se usi una variabile Long
  • Re: Valore calcolato in una tabella Access

    Grazie oregon, mi potresti dire la corretta sintassi, ho provato a utilizzare sia Currency (trattandosi di Valuta) che Double che Single ma poi mi esce l'errore di sintassi nell'istruzione di Update
  • Re: Valore calcolato in una tabella Access

    Ovviamente il problema è il separatore decimale... devi usare quello giusto... e se verifichi tu starai usando la virgola ma quasi certamente il separatore decimale è il PUNTO.
  • Re: Valore calcolato in una tabella Access

    Ciao Alex, in effetti cambiando il separatore decimale da , a . in Windows la routine gira correttamente. Il problema è che il programma Access dovrà funzionare in ambiente Citrix, cioè su desktop distribuiti centralmente su dei terminali e configurati per tutti uguale, dove di default il separatore decimale è la virgola. Forse devo usare un altro metodo per eseguire questo calcolo...
  • Re: Valore calcolato in una tabella Access

    Ho risolto. nel forum che mi ha consigliato Willy ho trovato come modificare la routine:

    Dim rstLeggi As ADODB.Recordset
    Dim MargineProg As Double
    Set rstLeggi = New ADODB.Recordset
    Dim rstScrivi As ADODB.Recordset
    Set rstScrivi = New ADODB.Recordset
    MargineProg = 0
    rstLeggi.Open "SELECT ID_Anno, Calcolato FROM T_Calcoli order by ID_Anno; ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    While Not rstLeggi.EOF
    MargineProg = MargineProg + rstLeggi!Calcolato
    rstScrivi.Open "Update T_Calcoli set MargineProg = """ & MargineProg & """ where ID_Anno= " & rstLeggi!ID_Anno & " ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    rstLeggi.MoveNext
    Wend
    rstLeggi.Close

    Grazie a tutti
Devi accedere o registrarti per scrivere nel forum
11 risposte