Buonasera a tutti.
Ho realizzato una form molto semplice per modificare i dati di una tabella. Le proprietà della form : immissione dati, consenti aggiunte, consenti modifiche, consenti eliminazione sono tutte impostate su no.
Nella Form è presente una casella combinata per la selezione del Record da visualizzare (cboAcronimo) e un pulsante “cmdModificaRecord” che pone su true la proprietà della maschera “allowedits” . Inoltre ho disseminato (probabilmente esagerando) di istruzioni per settare su False o su True, a seconda delle esigenze, la proprietà allowedits della form gli eventi load e current della form nonché gli eventi associati alla cboAcronimo (Gotfocus, LostFocus e AfterUpdate) .
In definitiva la procedura funzionava come desiderato: quando caricavo la form era possibile utilizzare la cboAcronimo per selezionare l'Acronimo da visualizzare e, dopo le scelta e il successivo requery, ogni modifica dei dati risultava inibita a meno del preventivo click sul comando cmdModificaRecord.
Successivamente ho creato una routine denominata ControlloCase che utilizza una funzione select per attivare/disattivare la visualizzazione di alcune caselle di testo e delle corrispondenti etichette della form, in relazione ai valori assunti dalla casella di testo idTipoRazionalizzazione.
Nella routine associata all'evento AfterUpdate della combobox cboAcronimo ho inserito il richiamo alla routine ControlloCase: la routine di controllo funziona però, per effetto del suo inserimento nell'evento AfterUpdate della combobox , non funzionano più come prima le proprietà allowedits della form , nel senso che, dopo aver caricato la maschera e selezionato l'Acronimo utilizzando la cboAcronimo, il record caricato è immediatamente modificabile anche senza la preventiva pressione del tasto di comando cmdModificaRecord.
Nonostante abbia posizionato la routine ControlloCase in differenti righe dell'evento cboAcronimo AfterUpDate non sono riuscito a venire a capo del problema; ho anche provato a inserire in coda a ciascun case dell'istruzione select una istruzione Me.AllowEdits = False senza ottenere alcun risultato.
Magari mi sfugge qualcosa di banale ma, non avendo esperienza di programmazione VBA e non avendo trovato né sul web né sui manuali di cui dispongo, alcuna soluzione chiedo l'aiuto del Forum. Spero per lo meno di aver esposto il problema in maniera soddisfacente.
In ogni caso allego la schermata della Form e il modulo vba ad essa collegato dal quale, per non appesantire l'allegato, ho eliminato le parti non coinvolte nella problematica, individuate sulla scorta del Debug del modulo.
Private Sub cboAcronimo_AfterUpdate()
Me.Requery
Me.Corpo.Visible = True
ControlloCase
Me.AllowEdits = False
cmdModificaRecord.Enabled = True
cmdSalvaRecord.Enabled = False
Me.EsitoRevPeriod.SetFocus
End Sub
Private Sub cboAcronimo_GotFocus()
Me.AllowEdits = True
End Sub
Private Sub cboAcronimo_LostFocus()
Me.AllowEdits = False
End Sub
Private Sub Form_Load()
Me.AllowEdits = False
Me.Corpo.Visible = False
End Sub
Private Sub ControlloCase()
If Not IsNull(Me.idTipoRazionalizzazione) Then
Select Case Me.idTipoRazionalizzazione
Case 2 'interventi di razionalizzazione
Me.InterventiRazionalizzazione.Visible = True
Me.InterventiRazionalizzazione_Etichetta.Visible = True
Me.PresuppostiAttuazione.Visible = False
Me.PresuppostiAttuazione.Value = Null
Me.PresuppostiAttuazione_Etichetta.Visible = False
Me.NoteRazionalizzazione.Visible = True
Me.Note_Etichetta.Visible = True
Case 5 'alienazione
Me.InterventiRazionalizzazione.Visible = False
Me.InterventiRazionalizzazione_Etichetta.Visible = False
Me.InterventiRazionalizzazione.Value = Null
Me.PresuppostiAttuazione.Visible = False
Me.PresuppostiAttuazione_Etichetta.Visible = False
Me.PresuppostiAttuazione.Value = Null
Me.NoteRazionalizzazione.Visible = True
Me.Note_Etichetta.Visible = True
Case 6 'cessione gratuita
Me.InterventiRazionalizzazione.Visible = False
Me.InterventiRazionalizzazione_Etichetta.Visible = False
Me.InterventiRazionalizzazione.Value = Null
Me.PresuppostiAttuazione.Visible = True
Me.PresuppostiAttuazione_Etichetta.Visible = True
Me.NoteRazionalizzazione.Visible = True
Me.Note_Etichetta.Visible = True
Case 7, 8, 9, 11, 12 'liquidazione, scioglimento, fusioni e recesso
Me.InterventiRazionalizzazione.Visible = False
Me.InterventiRazionalizzazione_Etichetta.Visible = False
Me.InterventiRazionalizzazione.Value = Null
Me.PresuppostiAttuazione.Visible = False
Me.PresuppostiAttuazione_Etichetta.Visible = False
Me.PresuppostiAttuazione.Value = Null
Me.NoteRazionalizzazione.Visible = True
Me.Note_Etichetta.Visible = True
Case 12 'Recesso
Me.InterventiRazionalizzazione.Visible = False
Me.InterventiRazionalizzazione_Etichetta.Visible = False
Me.InterventiRazionalizzazione.Value = Null
Me.PresuppostiAttuazione.Visible = False
Me.PresuppostiAttuazione_Etichetta.Visible = False
Me.PresuppostiAttuazione.Value = Null
Me.NoteRazionalizzazione.Visible = True
Me.Note_Etichetta.Visible = True
End Select
End If
End Sub