Buongiorno
La situazione attuale consiste in una maschera (attinente alla valutazione del personale) con sottomaschera che contiene i dati di ogni singola valutazione effettuata sul conto della persona.
La maschera principale, si "poggia" sulla Tabella [Personale], mentre la sottomaschera si poggia sulla Tabella [StoricoNote], legate dalla relazione [CIP] (Pk) uno a molti [CIP] (matricola del personale)
L'intento è quello di aggiornare alcuni campi della tabella [Personale] quando vengono aggiunti e o modificati i record alla sottomaschera (tabella [StoricoNote]) e magari aggiornare la visualizzazione della maschera principale con i nuovi dati inseriti.
Attualmente l'operazione viene effettuata mediante l'esecuzione di diverse query di aggiornamento, che fanno le operazioni richieste; il fatto che ciascuna richieda diverse conferme (finestre di avviso) prima della sua esecuzione.
Non vorrei disattivare tutte queste finestre nel Db, perchè alcune di esse (in altri casi) mi fanno comodo per avere una conferma ulteriore dell'operazione che viene effettuata.
Vorrei quindi ottenere lo stesso risultato mediante l'esecuzione di codice VBA, che piano piano sto scoprendo come un ottimo strumento di ausilio.
ho predisposto il seguente codice, che attualmente viene eseguito tramite un pulsante presente nella sottomaschera, ma una volta testato e funzionante, lo vorrei inserire nella sezione "after update" della maschera, dopo aver inserito anche gli altri campi da aggiornare, con altri If....
Private Sub Comando81_Click()
Dim dbs As DAO.Database
Dim Tabella As DAO.Recordset
Set dbs = CurrentDb
Set Tabella = dbs.OpenRecordset("Personale", [dbOpenDynaset])
Tabella.FindFirst "CIP = '& Me![CIP]'"
MsgBox Tabella.Fields("CIP") ' Verifica CIP selezionato
'========== Modifica Classifica =======
If Me.Classifica <> "Non Prevista" Then
Tabella.Edit 'Abilita la modifica del record
Tabella.Fields("ClassificaAttuale") = Me.Classifica 'imposta nuovo valore
Tabella.Update 'Salva La modifica
End If
End Sub
Il problema è nella ricerca del record da modificare, attraverso la stringa
Tabella.FindFirst "CIP = '& Me![CIP]'"
Dalla ricerca viene rilevato sempre lo stesso CIP, ovvero quello dell'ultimo impiegato inserito nella tabella [Personale]
Se inserisco il dato della ricerca manualmente es.
"CIP = '123456'", invece, funziona correttamente
Ho provato a inserire "CIP = Me.CIP", oppure "CIP = [Maschere]![Personale]![CIP]" oppure altre varianti, ma sempre con lo stesso risultato.
L'aggiornamento del record viene eseguito regolarmente, utilizzando il valore richiamato (Me.Classifica), ma sempre sul record relativo a quel [CIP]
Qual'é l'orrore che sto commettendo?