Riferimento a subform in struttura a schede

Anonimo
2020-08-21T12:06:20+00:00

Buongiorno a tutti.

in una form contenente una struttura a schede con alcune altre subform, per evitare involontarie modifiche o cancellazioni, ho impostato:

Private Sub Form_Load()

    Me.AllowEdits = False

        If Me.AllowEdits = False Then

            Me.flag_blocco.BackColor = RGB(167, 218, 78)

        Else

            Me.flag_blocco.BackColor = RGB(237, 28, 36)

        End If

End Sub

(le istuzioni contenute nell'If gestiscono una textbox non associata per segnalare il blocco o l'abilitazione alla modifica dei dati)

Nella form ho quindi inserito due pulsanti per abilitare o disabilitare la possibilità d'effettuare modifiche con il relativo codice:

Private Sub P_modifica_s_Click()

    Me.AllowEdits = True

        If Me.AllowEdits = False Then

            Me.flag_blocco.BackColor = RGB(167, 218, 78)

        Else

            Me.flag_blocco.BackColor = RGB(237, 28, 36)

        End If

End Sub

Private Sub P_modifica_n_Click()

    Me.AllowEdits = False

        If Me.AllowEdits = False Then

            Me.flag_blocco.BackColor = RGB(167, 218, 78)

        Else

            Me.flag_blocco.BackColor = RGB(237, 28, 36)

        End If

End Sub

In apertura effettivamente non si possono modificare i dati sia nei campi della form principale, sia nelle sbform.

Ssu click del pulsante P_modifica_s viene abilitata la modifica dei soli campi presenti nella form principale ma non quelli delle subform presenti nella struttura a schede.

Ho cercato un po' in giro ma non ho capito come fare riferimento alle subform nella stuttura a schede per abilitarne la modifica dei dati; probabilmente anche il codice che ho scritto non è un gran chè ma, portate pazienza, stò ancora cercando d'imparare.

Grazie

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

7 risposte

Ordina per: Più utili
  1. Anonimo
    2020-08-24T12:22:00+00:00

    Salve,

    se non ricevi un errore potrebbe significare che esiste qc altro che inibisce l'editazione delle sottomaschere.

    Sei sicuro che in principio sono aggiornabili?

    Le origini dati sono aggiornabili?

    L'editazione non è disattivata anche al livello dei singoli controlli?

    Se puoi mettere il focus ai controlli nelle sottomaschere e prova di digitiare o se scegli un record con il selettore record e prova di cancellarlo, vedi un informazione sulla barra di stato?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-08-24T09:32:35+00:00

    Scusa.

    descrizione di cosa succede:

    • in apertura della maschera l'editazione del contenuto dei controlli risulta correttamente bloccata;
    • su pressione del pulsante P_modifica_s (evento P_modifica_s_Click())  viene abilitata la modifica del contenuto dei controlli nella maschera principale, ma non di quelli contenuti nelle sottomaschere presenti nella struttura a schede.
    • nessun messaggio d'errore, nessuna richiesta di effettuare debug.

    Grazie per il supporto e scusa ancora per l'omissione

    Alberto

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-08-24T09:03:23+00:00

    Salve,

    se ora scrivessi anche come si esprime "non funziona" sarebbe possibile di rispondere a qualcosa. Succede un errore, con quale messaggio e numero, succede una cosa sbagliata o non succede niente o...?

    solo come nota:

    Nel tuo codice non eseguirei di nuovo questa linea per ogni controllo.

    Me.AllowEdits = True

    ma invece fuori del For Each ctl

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-08-24T08:28:15+00:00

    Buongiorno,

    grazie per la risposta ma

    Me.AllowEdits = True

    Me!SM_anag_geograf_strutt.Form.AllowEdits = True

    Me!SM_anag_infort_COVID.Form.AllowEdits = True

    Me!SM_anag_formazione.Form.AllowEdits = True

    non mi funziona.

    Ho verificato anche che il nome della sottomaschera fosse uguale in Proprietà>Dati>Oggetto origine e Proprietà>Altro>Nome elemento.

    Giusto per complicarmi la vita, e modificando alcuni spunti trovati in rete ho provato anche:

    Private Sub P_modifica_s_Click()

        Dim ctl As Control

        For Each ctl In Me.Controls

            If ctl.ControlType = acSubform Or ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acListBox Then

                Me.AllowEdits = True

                Me!SM_anag_geograf_strutt.Form.AllowEdits = True

                Me!SM_anag_infort_COVID.Form.AllowEdits = True

                Me!SM_anag_formazione.Form.AllowEdits = True

            End If

        Next

            If Me.AllowEdits = False Then

                Me.flag_blocco.BackColor = RGB(167, 218, 78)

            Else

                Me.flag_blocco.BackColor = RGB(237, 28, 36)

            End If

        Me.Refresh

    End Sub

    Ma non funziona ugualmente.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2020-08-22T14:10:58+00:00

    Salve,

    in rispetto alla sintassi la struttura a schede non importa. Cioè si riferisce alla sottomaschera nello stesso modo come sempre:

    Me!NomeDelControllaSottomaschera.Form.AllowEdits = True

    Dove "NomeDelControllaSottomaschera" è questo che si trova nella proprietà Nome Elemento del controllo sottomaschera (puo essere diverso del nome della maschera contenuta nel controllo sottomaschera = proprietà Oggetto Origine).

    La risposta è stata utile?

    0 commenti Nessun commento