Come bloccare l'editing di un record condizioanto al valore di un campo

di Anonimizzato21112 il
6 risposte
Ciao a tutti,
Ho un form legato alla tabella PRPExplosion che mostra la previsione mensile di produzione dei prossimi dodici mesi.

Per ogni record, identificato dal campo FEG, esistono 4 tipi di previsioni possibili nel campo "LayerType" ("CvtStagger"; "IndepDemand"; "Request GCRP"; "WIP Proj. Out").

Sto cercando il modo di consentire l'editing dei valori di previsione mensile solo se il record presenta nel campo "LayerType" il valore "IndepDemand", e di bloccarlo se "LayerType" assume uno fra I valori "CvtStagger", "Request GCRP", "WIP Proj. Out".

Ho provato a scrivere il codice seguente nelle proprieta' On Click e Before Update del campo

Me.NomeCampo.Enable = False
Me.NomeCampo.Locked = True

Ma sembra non funzionare.

Grazie per l'aiuto

6 Risposte

  • Io immagino che dopo i campi FEG e LayerTye, tu hai anche CampoX, CampoY e CampoZ (su questi ultimi 3 vorresti abilitare/disabilitare secondo come hai proposto). Io sfrutterei l'evento "Dopo aggiornamento" (AfterUpdate) su LayerType e scriverei questo:
    Private Sub LayerType_UfterUpdate()
    If Me!LayerType <> "IndepDemand" Then
        Me!CampoX.Enabled = False
        Me!CampoY.Enabled = False
        Me!CampoZ.Enabled = False
    End If
    End Sub
  • Grazie del suggerimento,
    purtroppo non funziona, continuo a poter scrivere nel campo.

    La tabella PRPExplosion, dalla quale il form ricava i dati, viene creata con il campo "LayerType" gia' compilato e quello non si deve piu' modificare. Modifico CampoX, CampoY, CampoZ etc. Speravo che anche il semplice transitare sul campo "LayerType" con il tasto di tabulazione venisse visto come un'azione di Update ma mi sono illuso.

    Da profano ho provato anche a scrivere Me!CampoX e Me.CampoX (perche' non conosco la differenza fra ! e .) ma nulla da fare.
  • maxgrana ha scritto:


    purtroppo non funziona, continuo a poter scrivere nel campo.
    Scrivilo sull'evento current della maschera

    maxgrana ha scritto:


    Da profano ho provato anche a scrivere Me!CampoX e Me.CampoX (perche' non conosco la differenza fra ! e .) ma nulla da fare.
    Infatti non è lì la differenza. In questo caso le due sintassi sono equivalenti.
  • Grazie anche a te,
    ma il campo si disabilita in tutti I record indipendentemente dal valore che assume "LayerType".
  • maxgrana ha scritto:


    Grazie anche a te,
    ma il campo si disabilita in tutti I record indipendentemente dal valore che assume "LayerType".
    
    Dim blnLayerType as Boolean
    blnLayerType  = (Me!LayerType = "IndepDemand")
    Me!CampoX.Enabled = blnLayerType 
    Me!CampoY.Enabled = blnLayerType
    Me!CampoZ.Enabled = blnLayerType
  • Grazieeeeeeeeeeee!!!!!!!!!!!!!!!!!!
Devi accedere o registrarti per scrivere nel forum
6 risposte