Premesso che sono d'accordo con Luky1964
Premesso che torno a consigliarti di fare una semplice SELECT
( vedi post del 08/05 h 06.11 )
Se devi comunque scrivere il risultato di un calcolo in tabella devi su
una maschera rilevare gli eventi di modifica di uno o dell'altro
controllo associati al calcolo e per ogni modifica con del codice VBA
calcolare il prodotto e scriverlo nel terzo controllo
In pratica ti do le istruzioni per costruirti una semplice
Demo funzionante che poi potrai adattare alla tua applicazione
__________________________________________________ ______
__________________________________________________ ______
__________________________________________________ ______
Creati un nuovo DataBase di Access 2003
__________________________________________________ ________________
Crea una nuova tabella di nome "Ta"
Inserusci dentro questi campi:
___ Id ___ Contatore __ Key
___ Rend __ Valuta __ Formato Standard __ Valore predefinito VUOTO
___ Impo __ Valuta __ Formato Standard __ Valore predefinito VUOTO
___ Prof __ Valuta __ Formato Standard __ Valore predefinito VUOTO
__________________________________________________ ___________________________
Crea una nuova maschera di nome "Masc1"
evita le Autocomposizioni
Vai alla visualizzazione struttura
Proprieta maschera
___ Dati
_____Origine record
_______Seleziona "Ta"
Apri la casella degli strumenti
__ Inserisci nella maschera 4 caselle di testo
__ Vai alle proprieta della 1° casella
____ Scheda "Tutte"
________ Nome elemento "Idx"
________ Origine controllo Selezioni "Id"
____ Scheda "Dati"
________ Bloccato Selezioni "Si"
__ Vai alle proprieta della 2° casella
____ Scheda "Tutte"
________ Nome elemento "Rendx"
________ Origine controllo Selezioni "Rend"
________ Formato Selezioni "Standard"
__ Vai alle proprieta della 3° casella
____ Scheda "Tutte"
________ Nome elemento "Impox"
________ Origine controllo Selezioni "Impo"
________ Formato Selezioni "Standard"
__ Vai alle proprieta della 4° casella
____ Scheda "Tutte"
________ Nome elemento "Profx"
________ Origine controllo Selezioni "Prof"
________ Formato Selezioni "Standard"
____ Scheda "Dati"
________ Bloccato Selezioni "Si"
Puoi mettere il testo che preferisci alle 4 etichette
delle caselle di testo
___ Salva
NB:
osserva che ho differenziato il Nome Elemento
dalla Origine Controllo, questo per farti capire dopo
sempre a cosa fai riferimento.
Osserva anche che la casella "Profx" è bloccata, questo
significa che tu non potrai scriverci dentro niente,
Sara Access a scrivere dentro il valore desiderato.
__________________________________________________ _____________
Puoi gia scrivere qualche numero in Rendx e Impox
vedrai che in Profx non succede nulla.
Prova a scrivere qualcosa in Profx
non potrai scrivere perche bloccato
Giusto?
__________________________________________________ ____________
__________________________________________________ ____________
__________________________________________________ ____________
__________________________________________________ ____________
abbiamo finito il lavoro di base, adesso manca un po di codice
per ottenere il risultato.
__________________________________________________ ______________
Adesso vai alla struttura di "Masc1"
Premi il pulsante "Codice" nella barra degli strumenti
Ti si apre una pagina bianca con scritto semplicemente:
__ Option Compare Database
Lo sostituisci con questo
codice:
Option Compare Database
Option Explicit
Private Sub Rendx_AfterUpdate()
'Succede dopo la modifica di Rendx
If (Eval("Forms!Masc1!Impox Is Not Null")) Then
'Se Impox NON è un campo vuoto
Call KKKK
'Richiama la funzione KKKK scritta sotto
End If
End Sub
Private Sub Impox_AfterUpdate()
'Succede dopo la modifica di Impox
If (Eval("Forms!Masc1!Rendx Is Not Null")) Then
'Se Rendx NON è un campo vuoto
Call KKKK
'Richiama la funzione KKKK scritta sotto
End If
End Sub
Private Function KKKK()
Me.Profx = Me.Rendx * Me.Impox / 100
'Imposta il valore di Profx al prodotto di Rendx x Impox / 100
DoCmd.RunCommand acCmdSaveRecord
'Registra nella tabella il record modificato
Beep
MsgBox "fatto", vbOKOnly, ""
'Potrai eliminare il messaggio di conferma
'cancellando il Beep e il MsgBox
End Function
Salva
Chiudi la finestra del codice
Salvi anche la maschera
Adesso devi legare le caselle di testo della tua maschera
al codice appena scritto:
Vai alla struttura della "Masc1"
__ Vai alle proprieta della casella "Rendx"
____ Scheda "Evento"
________ Dopo Aggiornamento Selezioni "Routine Evento" ( se non cìè già )
__ Vai alle proprieta della casella "Impox"
____ Scheda "Evento"
________ Dopo Aggiornamento Selezioni "Routine Evento" ( se non cìè già )
Finito.
Ora devi adattare i nomi dei controlli alla tua situazione