Blocca record corrente

di
Anonimizzato8433
il
11 risposte

Blocca record corrente

Ciao a tutti,
di tanto in tanto ci si ritrova ancora alle prese con Access. Questa volta per chiedere un aiuto di questo tipo:
all'interno di un piccolo gestionale (realizzato anche con l'aiuto della community), nel quale ho una maschera Dati ho un campo booleano Pratica evasa ... vorrei fare in modo che quando questo campo è flaggato (SI) venisse impedita la modifica ai vari campi (nome, cognome, data di nascita, ecc.) presenti. Ho trovato alcuni thread di Alex e Osvaldo ma non sono riuscito a raggiungere l'obiettivo. Grazie anticipatamente a tutti.

11 Risposte

  • Re: Blocca record corrente

    Potresti segnalare i thread di cui parli?
    In sostanza si tratta (io ti rispondo con una macro) di applicare all'evento "Su corrente" una serie di ImpostaValore su tutti gli altri campi della proprietà Bloccato che si esprime
    ImpostaValore
    Elemento: [Maschere]![NomeMaschera]![NomeCampo].[Locked]
    Espressione: Vero
    Questa serie di ImpostaValore devono essere condizionati con l'espressione:
    [Maschere]![NomeMaschera]![Pratica evasa]=Vero
    Alla fine della serie di ImpostaValore devi aggiungere una ulteriore continuazione della condizione (usa i tre puntini) con l'azione macro ArrestaMacro.
    Sotto questa azione, devi scrivere una analoga serie di ImpostaValore Locked--->Falso e con analoga condizione contraria Falso.

    Spero di avere azzeccato!
  • Re: Blocca record corrente

    Ciao,
    prova a richiamare questa sub nel controllo, impostando come valore di default del tuo controllo true and come tag X
    
    Sub checkFormControl()
    Dim ctl As Control
    For Each ctl In Me
        If ctl.Tag <> "X" And ctl.ControlType = acTextBox Then
           ctl.Locked = Not Me.TuoControlloCheckBox
        End If
    Next
    Set ctl = Nothing
    
    End Sub
    
    un saluto.
  • Re: Blocca record corrente

    Vari campi è troppo generico...!
    Se vuoi che il Record sia non editabile...su evento Current di Maschera...
    
    Private Sub Form_Current()
       Me.AllowEdits= Me.NewRecord OR Me!NomeCheck.Value=False
    End Sub
    Altrimenti Goku ti ha proposto la soluzione adeguata.
  • Re: Blocca record corrente

    Questi sono i thread che avevo già visto
    - http://forum.masterdrive.it/access-79/bloccare-record-pulsante-si-22548/
    - https://www.iprogrammatori.it/forum-programmazione/access/abilitare-disabilitare-dati-con-campo-booleano-t15362.html

    Quello che più mi sembra avvicinarsi a quanto cerco di realizzare è (forse) il suggerimento di Goku ma sicuramente sbaglio qualcosa e ancora non sono riuscito a realizzare la procedura.
    Al momento ho fatto così: nella maschera DATI ho inserito una casella di controllo (che si appoggia al campo PraticaEvasa (Si/No) in tabella DATI) e all'evento clic ho inserito il codice di Goku ma mi restituisce errore ERRORE DI COMPILAZIONE - PREVISTA END SUB.
    Eppure l'END SUB c'é !!
  • Re: Blocca record corrente

    Avrai scritto male qualche If o For ... controlla meglio
  • Re: Blocca record corrente

    Il codice l'ho copiato, proprio per evitare errori d trascrizione, eppure ...
    Forse sbaglio qualcosa a monte.
  • Re: Blocca record corrente

    Quale sarebbe il CODICE...? Se non lo esponi non riusciamo...
  • Re: Blocca record corrente

    Ho utilizzato il suggerimento di Goku pari pari.
  • Re: Blocca record corrente

    C'è effettivamente un'errore...
    
    For Each ctl In Me
    L'oggetto [Me] è la Machera, ma i controlli sono contenuti nella Collection Controls...
    
    For Each ctl In Me.Controls
    Riprova...
  • Re: Blocca record corrente

    Ciao,
    per scrupolo ho testato la sub suggerita con win 8 office 2013m win xp office 2003 e win7 con office 2010 nessun errore mi viene riscontrato...
    una curiosità, come la richiami la sub che ti ho postato?
    facci sapere..
  • Re: Blocca record corrente

    Eccomi qui,
    la sub l'ho legata all'Evento Clic del controllo. Visto che di default è su True al suo clic dovrebbe avviare la routine. Eppure così non è. Il codice è quello postato e provato da Goku.
    Forse sbaglio qualcosa altrove, ma dove ?
    Ciao a tutti
Devi accedere o registrarti per scrivere nel forum
11 risposte