Attivare cbo con modifiche e inserimento disattivati (con vba)

di il
6 risposte

Attivare cbo con modifiche e inserimento disattivati (con vba)

Buongiorno a tutti!

Sto creando un database gestionale per il laboratorio di chimica della mia scuola ma in una form con due combo in cascata collegate alla maschera ho il problema che in modalità visualizzazione (quindi with me .allowedits = false .allowadditions = false end with) naturalmente le cbo sono "disattivate".
Esiste un modo per aggirare questo problema senza passare per il tasto di modifica che mi mette su true i due valori precedenti?

Grazie mille in anticipo, Gabriele

6 Risposte

  • Re: Attivare cbo con modifiche e inserimento disattivati (con vba)

    Devi rendere non editabili i controlli singolarmente invece di usare AllowEdits.
    Sono 4 righe di codice..
    Assegna ai controlli da Bloccare/Sbloccare un valore alla proprietà TAG... esempio "X" quindi.cilci la collection controls e tutti i controls tipo TextBox e/o quelli che hai... con proprietà TAG="X" forzi la proprietà ENABLED o LOCKED come preferisci a seconda del tipo di controllo... lo semplifico ma così non è ottimizzato, poi vedrai tu...
    
    Function SetStatus( Optional Value as boolean=False)
    Dim ctl As Access.Control
    
    For each ctl in Me.Controls
       Select case ctl.controltype
          Case acTextBox, acCombobox, acOptionGroup
              If ctl.Tag="X" Then ctl.enabled=Value
              ' su textboxno combo puoi usare la proprietà Locked
        End selecct
     Next
     End Function
    
  • Re: Attivare cbo con modifiche e inserimento disattivati (con vba)

    Ciao, premetto che sono alle prime armi e che mi ci va un attimo a capire bene le sintassi dei codici ahah
    Dimmi se ci ho capito qualcosa o se sono completamente fuori strada...

    In questo caso do di default value = false e dico che nel caso di textbox, cbo e optiongroup i controlli della maschera sono disabilitati?
    L'altra mia domanda è: dove la imposto la prop TAG? Nella scheda delle proprietà del controllo in questione o attraverso codice?

    Grazie mille, e perdona la poca competenza in materia haha

    EDIT: già che ti sono posso chiederti perchè (suppongo) è più funzionale creare questa funzione e non lavorare su on enter (allowedit = true) e on exit (allowedits = false) dalle due cbo? è una soluzione che mi hanno suggerito nel pomeriggio, ma non so quanti bachi abbia
  • Re: Attivare cbo con modifiche e inserimento disattivati (con vba)

    Le cose si possono vedere sempre in diversi modi e servirebbe capire bene come operi...
    Di fatto il suggerimento che ti è stato dato... richiede un sacco di codice specifico per ogni controllo... cosa che se la logica è gestire l'editabilità dei dati con condizione, equiparabile ad Allowedits... è molto più laboriosa... ma deve avere un senso specifico, che io non trovo... e che puoi chiedere a chi ti ha dato il suggerimento.

    Ti è stato dato con messaggio privato questo suggerimento...?

    Scenario standard.
    Partiamo dal fatto che i dati NON SONO EDITABILI.
    I dati saranno editabili su CONDIZIONE.

    Su evento Current della maschera si chiama la funzione che di default rende non editabile il record, ovviamente non se si è in aggiunta, quindi:
    
    Private Sub Form_Current()
        CALL SetStatus(Me.NewRecord)
        End sub
    
    Poi devi definire quale sia la tua condizione che rende EDITABILE.... in quel caso chiami la stessa funzione
    
    CALL SetStatus(True)
    
    La funzione che ti ho suggerito come vedi è unica e semplice da chiamare per gestire l'abitabilità.

    La proprietà TAG la gestisci come hai giustamente detto nella finestra delle proprietà.
  • Re: Attivare cbo con modifiche e inserimento disattivati (con vba)

    Ciao, no no, me l'ha suggerito distrattamente mio padre ma non ha mai studiato vba, non sa essere abbastanza esaustivo ahah

    Posso chiederti come mai hai messo "l'eccezione" tra parentesi? L'argument non è ciò che deve passare nella funzione?
    Quando chiamo la funzione per rendere editato devo seguire una procedura simile a questa? :
    If (condizione) Then
    Call SetStatus(True)
    End If
    Questa stringa di codice dova andrebbe passata? E soprattutto, quale sarebbe la condizione per una combobox?
  • Re: Attivare cbo con modifiche e inserimento disattivati (con vba)

    Non è l'eccezione quella ma se inserisci un nuovo record devi abilitare tutto per poter inserire... quindi BLOCCA quando cambi record in quanto la proprietà NewRecord =False mentre diventa True quando premi * nella barra navigazione per il nuovo.

    Ora la condizione per sbloccare su record la devi sapere tu... può semplicemente essere un Button per abilitare le modifiche volutamente...
  • Re: Attivare cbo con modifiche e inserimento disattivati (con vba)

    Grazie mille, gentilissimo
Devi accedere o registrarti per scrivere nel forum
6 risposte