Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

disabilitare campo access vba dopo la compilazione (impedire la modifica)

  1. #1
    marcello1 non è in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    buongiorno a tutti da Marcello, confido nella vostra preparazione per risolvere un problema con il mio programma. Ho necessità di disabilitare un campo a seguito della compilazione in quanto , una volta compilato, da' il nome a una cartella e pertanto voglio impedire la successiva modifica. Ho provato il seguente schema:

     
    Private Sub Form_Open(Cancel As Integer)
    DoCmd.Maximize
     If nome_cartella.Value = Null Then
     nome_cartella.Enabled = False
     Else: nome_cartella.Value = Not Null
     nome_cartella.Enabled = True
     Exit Sub
     End If
    End Sub
    
    però non va. Qualcuno può darmi qualche suggerimento? grazie
    Ultima modifica di Master85; 12-01-2021 15:26  Motivo: Aggiunta tag code

  2. #2
    Post
    1,819
    Like Inviati  
    0
    Like Ricevuti  
    4
    Quote Originariamente inviato da marcello1 Visualizza il messaggio
    Qualcuno può darmi qualche suggerimento? grazie
    Il trucco da tenere bene a mente è questo: quando una proprietà di tipo booleano è determinata dal verificarsi o meno di una condizione si fa così
    NomeControllo.ProprietàBooleana = (espressione di verifica booleana)
    
    senza passare dall'uso di IF
    nome_cartella.Enabled = Len(nome_cartella.Value & vbNullString) = 0
    
    Adesso cerca l'evento o gli eventi giusti in cui posizionare questo codice.
    Ultima modifica di Phil_cattivocarattere; 12-01-2021 14:18  Motivo: avevo sbagliato l'operatore di verifica booleana

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,750
    Like Inviati  
    0
    Like Ricevuti  
    20
    L'esigenza di CREARE cartelle tematiche è argomento che si associa più alla non piena consapevolezza di come si lavora con i Database..., inutile dire che è un retaggio di chi è abituato ad avere un'organizzazione di File che rispecchia un determinato ordine mentale, ma che nella realtà non ha alcun senso tecnico usando un Database.

    Detto questo, il suggerimento di Phil è corretto, ma l'evento su cui applicarlo è errato, te ne accorgeresti cambiando Record dopo l''evento OPEN... che nei records successivi lo status di ENABLED non sarebbe condizionato dalla "condizione" reale ma sempre dalla prima...!

    Quindi l'evento corretto è Current ma, condizionato dalla verifica del Nuovo Record...
    Private Sub Form_Current()
        If Not Me.NewRecord then
           nome_cartella.Enabled = Len(nome_cartella.Value & vbNullString) = 0
        Else
           nome_cartella.Enabled = True
        End if
    End Sub
    
    Oppure per estremizzare la sintesi
    Private Sub Form_Current()
        nome_cartella.Enabled = (Len(nome_cartella.Value & vbNullString) = 0 ) OR Me.NewRecord 
    End Sub
    
    Ultima modifica di @Alex; 12-01-2021 15:44 
    ℹ️ Leggi di più su @Alex ...

  4. #4
    marcello1 non è in linea Novello
    Post
    8
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    L'esigenza di CREARE cartelle tematiche è argomento che si associa più alla non piena consapevolezza di come si lavora con i Database..., inutile dire che è un retaggio di chi è abituato ad avere un'organizzazione di File che rispecchia un determinato ordine mentale, ma che nella realtà non ha alcun senso tecnico usando un Database.

    Detto questo, il suggerimento di Phil è corretto, ma l'evento su cui applicarlo è errato, te ne accorgeresti cambiando Record dopo l''evento OPEN... che nei records successivi lo status di ENABLED non sarebbe condizionato dalla "condizione" reale ma sempre dalla prima...!

    Quindi l'evento corretto è Current ma, condizionato dalla verifica del Nuovo Record...
    Private Sub Form_Current()
        If Not Me.NewRecord then
           nome_cartella.Enabled = Len(nome_cartella.Value & vbNullString) = 0
        Else
           nome_cartella.Enabled = True
        End if
    End Sub
    
    Oppure per estremizzare la sintesi
    Private Sub Form_Current()
        nome_cartella.Enabled = (Len(nome_cartella.Value & vbNullString) = 0 ) OR Me.NewRecord 
    End Sub
    
    grazie mi hai risolto il problema. Non ci sarei mai arrivato altrimenti. grazie ed a presto. Complimenti per la competenza.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 1
    Ultimo Post: 04-05-2016, 08:26
  2. modifica campo dopo aver eseguito una query
    Da red_apple nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 05-05-2014, 20:23
  3. Risposte: 8
    Ultimo Post: 14-04-2013, 15:22
  4. Impedire modifica file Access
    Da m0sc4rd0 nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 28-10-2012, 17:01
  5. Impedire compilazione campo
    Da Riproviamo nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 21-09-2011, 09:56