Copiare campo calcolato

di il
22 risposte

22 Risposte - Pagina 2

  • Re: Copiare campo calcolato

    muttley005 ha scritto:


    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.
    Anche io sono contrario, ma Access è stato l'ultimo ad introdurli. Mysql ad esempio è dal 2006 che ne fa uso. Quindi il problema non è tanto la portabilità, ma il fatto che un database dovrebbe contenere solo dati, che poi verranno usati per qualsiasi esigenza, tanto da rendere superfluo avere registrati dei dati che possono essere creati al momento, senza appesantire il database o creare pericolose incongruenze difficili da individuare.
  • Re: Copiare campo calcolato

    lucavalentino ha scritto:



    Uso le mie idee perché forse non siete stati chiari
    Con il dovuto rispetto. Forse più che mancanza di chiarezza da parte nostra, è mancanza di conoscenza da parte tua.
    Ripeto, stai affrontando il problema con la giusta logica, ma con metodi, oltre che inutilmente macchinosi, anche difficilmente gestibili da chi ha anni di esperienza alle spalle. Incollando comandi VB a casaccio.
    Non è per offendere che ti dico ciò, ma perchè, se continui ad usare comandi copiati ed incollati e presi a casaccio da vari esempi, non ne verrai mai a capo.

    lucavalentino ha scritto:


    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.
    No. Aspetta.
    Io pensavo che dovevi calcolare il dato e poi salvarlo direttamente in un altra tabella senza passare per delle form o report.
    Ma scusa, allora perchè calcoli il dato tramite una query, quando puoi farlo comodamente con una banale somma direttamente nella casella di testo?
    Oppure ancora più semplicemente creare direttamente una form sulla query?
  • Re: Copiare campo calcolato

    Non posso calcolare nella maschera poiché nella query associata bob ci sono i dati da cui voglio il calcolo
  • Re: Copiare campo calcolato

    La query che riporto
    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 & ""
    Se la eseguito in visualizzazione sql funzioma mentre in vba ora mi da errore di runtime 13. Tipo non corrispondente
  • Re: Copiare campo calcolato

    lucavalentino ha scritto:


    Non posso calcolare nella maschera poiché nella query associata bob ci sono i dati da cui voglio il calcolo
    e niente, continui a ragionare esclusivamente secondo il tuo pensiero escludendo a piedi pari qualsiasi altra soluzione.
    Ti sei incaponito a tutti i costi di dover usare una query con campo calcolato, addirittura in vb, che è ancora più complicato farlo, senza considerare minimamente altri metodi più semplici e veloci.

    Fai questa prova solo per esercizio di stile.

    con il compositore automatico delle query crea la query che ti occorre, salvala, selezionala nel menù laterale e poi usa crea maschera e vedi che succede.
    Da li poi puoi salvare ogni singolo dato in qualsiasi posto desideri.
  • Re: Copiare campo calcolato

    lucavalentino ha scritto:


    Non mi state aiutando.
    Cosa non vi è chiaro
    Il problema non è che non ti stiamo aiutando, quanto che vuoi essere aiutato secondo una tua LOGICA che personalmente reputo potenzialmente non corretta.
    Se a questo aggiungiamo che, il codice che proponi con l'uso di ADO è poco probabile, con Access si usa nativamente DAO, e che gli esempi che fai contengono sempre errori concettuali profondi, vedi la Query Action iniziale... francamente darti suggerimenti si fatica per il semplice fatto che, a prima vista sembrerebbe tu abbia basi di VBA, ma seguendo temo sia molto frutto di Copia/Incolla maldestro di varie cose a cui manca la base di come il sistema funziona...!

    Ora come possiamo aiutarti...? Diccelo tu.
  • Re: Copiare campo calcolato

    Vorse un po' troppo complesso quindi accetto suggerimenti per migliorare.
    Sono in parte riuscito a risolvere la questione di salvare un valore calcolato.
    
    Private Sub data AfterUpdate()
    If IsNull(Me.DATA_SSL) Then
    Me.VOTO = Null
    Me.qualifica_f = Null
    Else
        Dim CN As ADODB.Connection
       Dim rs As Recordset
       Dim qualifica_finale As String
    
       Dim sql As String
       Set CN = CurrentProject.AccessConnection
          Set rs = New ADODB.Recordset
    Dim num_id As String
    num_id= Me.id
    With rs
    sql = "SELECT tblArchivio.ID, Sum([tblArchivio]![VOTO]*[tblArchivio]![COEFF]) as TOT_EFFETT, Sum ([tblArchivio]![COEFF]) as TOT_COEFF, IIf([NO_MEDIA] = 0, Round([tot_effett] / [TOT_COEFF], 2), 0) As voto_finale, tblArchivio.NO_MEDIA  from tblArchivio GROUP BY tblArchivio.ID, tblArchivio.NO_MEDIA HAVING tblArchivio.NO_MEDIA=0 and  tblArchivio.ID='" & num_id & "'"
            .Source = sql
           .Open
       End With
       
       MsgBox rs!VOTO
       If Not rs.BOF Or Not IsNull(rs!VOTO) Then
       Me.VOTO.Value = rs!voto_finale
       end if
       end sub
    
    Penso che che quando la query non restituisce valore mi dia tale errore
    Errore di run-time 3265
    Impossibile trovare l''oggetto nell'insieme corrispondente al nome e al numero richiesto
    
    Come far in modo di evitare l'errore o comunque verificare che rs!VOTO sia valido /esista
  • Re: Copiare campo calcolato

    C'è il problema della divisione con valori #Num!
    Si risolve mettendo 0 se un valore è nullo poi si fa il calcolo
Devi accedere o registrarti per scrivere nel forum
22 risposte