Copiare campo calcolato

di il
22 risposte

Copiare campo calcolato

In una query ho dei campi calcolati in che vorrei i salvare in una tabella
Mi spiego meglio
Quando in un controllo maschera chiamato data inserisco la data il valore di altri due due campi deve essere salvato dalla query calcolata.
Private Sub data_ssl_AfterUpdate()
   'DoCmd.RunSQL "UPDATE tbl_tab1 SET tbl_tab1.valore = qryMediaCalcolo!valore, tbl_tab1!VOTO = [qryMediaCalcolo]![media_finale]  WHERE [qryMediaCalcolo]![ID]='" & Me!ID& "'"
     End If
End Sub

22 Risposte

  • Re: Copiare campo calcolato

    Ciao.
    Secondo me prima devi calcolare le medie del calcolo, assegnarle ad una variabile e poi salvare i dati contenuti nella variabile.
  • Re: Copiare campo calcolato

    Cosa non ti funziona?
    quel codice è commentato ... poi c'è un endif sparso ...
    sembra molto un copia incolla preso male da chissà dove senza capire cosa si stia facendo
  • Re: Copiare campo calcolato

    fratac ha scritto:


    Ciao.
    Secondo me prima devi calcolare le medie del calcolo, assegnarle ad una variabile e poi salvare i dati contenuti nella variabile.
    non necessariamente, anzi può essere completamente inutile, dipende
  • Re: Copiare campo calcolato

    muttley005 ha scritto:


    fratac ha scritto:


    Ciao.
    Secondo me prima devi calcolare le medie del calcolo, assegnarle ad una variabile e poi salvare i dati contenuti nella variabile.
    non necessariamente, anzi può essere completamente inutile, dipende
    mmmm temo invece che quella Query scritta così abbia una bassissima efficienza..., risolvibile proprio con la risoluzione esterna dei valori, oltre che a qualche anoamlia di sostanza...!

    Faccio notare che si va a modificare la Tabella [tbl_tab1] ma si usa a Parametro WHERE un ID di una Query non aperta, pertanto che valore ci aspettiamo da quella query...?
    
    [qryMediaCalcolo]![ID]='" & Me!ID& "'"
    Questo è il predicato completo ovviamente errato in quanto il Campo di azione non è quello della Query ma della Tabella...
    
    DoCmd.RunSQL "UPDATE tbl_tab1 SET tbl_tab1.valore = qryMediaCalcolo!valore, tbl_tab1!VOTO = [qryMediaCalcolo]![media_finale]  WHERE [qryMediaCalcolo]![ID]='" & Me!ID& "'"
  • Re: Copiare campo calcolato

    muttley005 ha scritto:


    fratac ha scritto:


    Ciao.
    Secondo me prima devi calcolare le medie del calcolo, assegnarle ad una variabile e poi salvare i dati contenuti nella variabile.
    non necessariamente, anzi può essere completamente inutile, dipende
    Certo. Però, solitamente, do indicazioni seguendo l'approccio di chi scrive.
    Parto dal presupposto che se approccia un problema in un determinato modo, oppure scrive il codice in una determinata maniera, non ha ancora le competenze o le conoscenze per poter gestire soluzioni diverse.
    Capisco che potrei farlo continuare su una strada "sbagliata", poco elegante o non performante, ma nel caso contrario, bisognerebbe spiegargli mezzo manuale di teoria e pratica di programmazione VB, senza sapere qual'è il grado di conoscenze che ha già acquisito con il rischio di scrivere un tomo che non capirebbe.
    Poi, mano a mano che procede nella programmazione e nello studio, come tutti noi quando eravamo all'inizio, troverù soluzioni più professionali.
  • Re: Copiare campo calcolato

    Alex o non ti sto capendo io non hai letto tutto il mio post
  • Re: Copiare campo calcolato

    muttley005 ha scritto:


    Alex o non ti sto capendo io non hai letto tutto il mio post
    Siccome non credo di essere ancora "di coccio", immagino che quel commento derivi dal fatto che ha fatto qualche maldestro TEST non funzionante e che alla fine il commento sia rimasto ... come refuso, come "end if"

    E' talmente evidente che così non può funzionare, ma è vero anche immagino che se commenti tutto il problema sparisca...

    Quindi, io ho ipotizzato che servisse analizzare quanto nella Query per dare sostanza al 3D... non al commento della stessa.

    Cosa secondo te ho frainteso nel mio intervento alla luce della esposizione...?
  • Re: Copiare campo calcolato

    Questo è il codice che per prova sto eseguendo
    Private Sub data_ssl_AfterUpdate()
       DoCmd.RunSQL "UPDATE  tbl_tab1 SET tbl_studi!valore = qryMediaCalcolo!valore, tbl_tab1 !VOTO = [qryMediaCalcolo]![media_finale]  WHERE [qryMediaCalcolo]![ID]='" & Forms!clienti!ID& "'"
    End Sub
    
    Quando aggiorno il campo data della maschera esegue la query, ma mi chiede i campi valore, voto e id come se fossero partametri su richiesta invece di salvare il calcolo
  • Re: Copiare campo calcolato

    @Alex ha scritto:


    ...
    Cosa secondo te ho frainteso nel mio intervento alla luce della esposizione...?
    no è che io ho scritto
    quel codice è commentato ... poi c'è un endif sparso ...
    sembra molto un copia incolla preso male da chissà dove senza capire cosa si stia facendo
    che mi sembrava praticamente la stessa cosa che hai scritto tu ma tu mi hai risposto come se avessi detto una stupidaggine quindi da lì il mio dubbio.
  • Re: Copiare campo calcolato

    Non mi state aiutando.
    Cosa non vi è chiaro
  • Re: Copiare campo calcolato

    Per raggirarte il problema sto tentando id fare il calcolo direttamente in VBA senza recuperarlo da una query

    il codice sotto riporta l'errore Tipo di dati non corrspondenti nell'espressione criterio
       Dim CN As ADODB.Connection
        Dim rs As Recordset
        Set CN = CurrentProject.AccessConnection
            Set rs = New ADODB.Recordset
            With rs
            Set .ActiveConnection = CN
             .Source = "SELECT tblArch.ID, Sum([tblArch]![VOTO_ESAME]*[tblArch]![COEFF]) AS tot_effett, tblArch.NO_MEDIA FROM tblArch GROUP BY tblArch.ID, tblArch.NO_MEDIA HAVING tblArch_es.ID=" & Forms!frmStudenti!ID & ""
          .LockType = adLockOptimistic
            .CursorType = adOpenKeyset
            .Open
        End With
            If Not rs.BOF Then
            MsgBox rs!TOT_EFFETT
            End If
    
    Come posso correggere e poi migliorare il codice
  • Re: Copiare campo calcolato

    Se non dici in che punto ti da errore, è un po' difficile aiutarti.
    Inoltre mi sembra una strada lunga e tortuosa.
    Perchè ti riconnetti al data base?
    Ad occhio, mi sembra che la query è scritta male, senza considerare che prendi valori da una tabella e da un controllo di una form? (se funziona non ho mai utilizzato una cosa del genere, almeno non in questo modo)
    Ma l'hai testata?
    Inoltre, che versione di access stai utilizzando?
    Se usi ad esempio la 365, puoi usare il campo calcolato a livello di tabella.
    I puristi non amano usare i campi calcolati, ma risolveresti con una semplice somma a livello di struttura tabell.
    Inoltre, che cosa intendi per salvare? Devi accodare un intero record? Devi andare ad aggiornare dei campi in dei record già esistenti?
    Ogni domanda che ti ho esposto ha soluzioni ben differenti.
    E con il dovuto rispetto, perchè continui a proporre sempre la tua soluzione ignorando i suggerimenti dati che ti suggeriscono di cambiare approccio?
  • Re: Copiare campo calcolato

    fratac ha scritto:


    Se non dici in che punto ti da errore, è un po' difficile aiutarti.
    Il codice si ferma in open

    fratac ha scritto:


    Inoltre mi sembra una strada lunga e tortuosa.
    Perchè ti riconnetti al data base?
    Ad occhio, mi sembra che la query è scritta male, senza considerare che prendi valori da una tabella e da un controllo di una form? (se funziona non ho mai utilizzato una cosa del genere, almeno non in questo modo)
    Ma l'hai testata?
    Ovviamente l'ho testata. Non sono prartico di VBA perciò qualsiasi suggerimento è ben accetto

    fratac ha scritto:


    Inoltre, che versione di access stai utilizzando?
    Se usi ad esempio la 365, puoi usare il campo calcolato a livello di tabella.
    Uso la versione 365.
    Mi è stato suggerito che le tabelle devono contenere solo dati grezzi e che sarà un bene per eventuale cambiamento di software

    fratac ha scritto:


    E con il dovuto rispetto, perchè continui a proporre sempre la tua soluzione ignorando i suggerimenti dati che ti suggeriscono di cambiare approccio?
    Uso le mie idee perché forse non siete stati chiari

    Nell'ultimo codice proposto quello che vorrei fare è calcolare la somma e poi caricare il risultato in un controllo maschera cosi da salvare il dato.
  • Re: Copiare campo calcolato

    fratac ha scritto:


    ...
    I puristi non amano usare i campi calcolati, ma risolveresti con una semplice somma a livello di struttura tabell.
    ...
    non si tratta di puristi, si tratta di portabilità ... poi se uno lo usa ad uso esclusivo personale e non lo deve distribuire va bene tutto.
Devi accedere o registrarti per scrivere nel forum
22 risposte