Mi sono appena iscritto al forum e non sono un esperto, ma vediamo se riesco a darTi una risposta.
Consideriamo di voler aggiornare, nella tabella “Materiali acquisto”, la giacenza di magazzino [Giac] del materiale [Codice_Prodotto] dopo la spedizione del materiale [Cod_materiale_1] in quantità [Qtà_1] presente nella tabella “Fatturazione” alla Posizione 1.
Preventivamente:
1) è necessario definire, in un modulo, le variabili.
Nel modulo … “chiamalo come vuoi”.
Public Cod_materiale As String, Ok As String
Public Gia As Integer
2) nella maschera della tabella "Materiali acquisto" scrivere una routine associata a “Evento - Su attivato”
Private Sub Codice_Prodotto_GotFocus()
On Error GoTo 10
If Ok = "Si" Then [Giac] = ([Giac] - Gia) ' Aggiorna giacenza
10:
End Sub
Nella maschera della tabella “Fatturazione” scrivere una routine associata a “Evento - Dopo aggiornamento”
Private Sub Qtà_1_AfterUpdate()
On Error GoTo 10
Ok = "Si"
Gia = [Qtà_1] ' Quantità in fattura alla posizione "1"
Cod_materiale = [Cod_materiale_1] ' Codice materiale
Application.Echo False
DoCmd.OpenForm "Materiali acquisto" ' Apre la maschera "Materiali acquisto"
DoCmd.FindRecord Cod_materiale, , True, , True 'Seleziona il record indicato
DoCmd.Close acForm, "Materiali acquisto", acSavePrompt ' Chiude la maschera
Application.Echo True
Ok = "No"
10:
End Sub
Sicuramente ci sarà una soluzioni più ortodossa ma, per ora, ho trovato questa procedura e , mi pare, funzioni; è necessario però che il valore della quantità da scaricare non sia mai un Null altrimenti si genera confusione.
Spero di essere stato abbastanza esaustivo.
Cordiali saluti e buon lavoro.
A disposizione.
Giuseppe Guernieri