Disabilitare i pulsanti di una maschera

di il
14 risposte

Disabilitare i pulsanti di una maschera

Salve,

in una maschera dove posso creare nuovi record disabilito i pulsanti che mi permettono di uscire prima di aver inserito tutti i valori, arrivando anche a creare record vuoti. Il blocco dei pulsanti lo faccio così:

    Me!cmdAggiungiMancante.Enabled = False
    Me!cmdSalva.Enabled = False
    Me!cmdEsci.Enabled = False

Queste righe stanno nell'evento su click del pulsante che consente di aggiungere un nuovo record.

Ora, sul mio Access di Office 365 funziona, su Access 2007 che hanno i miei colleghi invece no.

Qualcuno sa spiegarmi il motivo ?

Grazie

14 Risposte

  • Re: Disabilitare i pulsanti di una maschera

    Non ho capito bene… 

    Quei pulsanti sono creati da te, ma se uno usa le combinazioni dei Tasti li può bypassare…?
    Se quei tasti non sono associati alla gestione delle proprietà di Maschera AllowAdditions/AllowEdits/AllowDeletions i pulsanti fine a se stesso non fanno nulla…

    Quì trovi le combinazioni dei Tasti che consentono di muoversi tra i Records ed altro…

    https://support.microsoft.com/it-it/office/scelte-rapide-da-tastiera-per-access-70a673e4-4f7b-4300-b8e5-3320fa6606e2

    Aggiungo che devi sempre mettere su Current la gestione del Ripristino alla condizione normale… altrimenti se scorri i Records rimane memorizzata la variante di modifica in modo non corretto.

    Detto questo non mi risulta alcuna modifica attinente tra A365 ed A2007

  • Re: Disabilitare i pulsanti di una maschera

    Le impostazioni di maschera dovrebbero essere a posto (ma li ricontrollerò), il problema è che nel mio access 365 le istruzioni sopra disabilitano i pulsanti, nel 2007 rimane tutto attivo, quindi l'utente può cliccare “Aggiungi mancante” per iniziare a editare un nuovo record e immediatamente cliccare “Salva” o “Esci” lasciandomi un record vuoto in tabella.

  • Re: Disabilitare i pulsanti di una maschera

    Sei sicuro che vengano eseguiti gli EVENTI,,,?

    Hai messo un breackpoint per capire se il codice effettivamente viene eseguito…?

    Solitamente   mancato funzionamento del codice avviene in caso manchino dei riferimenti nelle librerie del VBA Excel/Word, qualche Activex non presente… ecc…

  • Re: Disabilitare i pulsanti di una maschera

    29/05/2023 - StackPtr ha scritto:


    Le impostazioni di maschera dovrebbero essere a posto

    O sono a posto o non lo sono …  come ben detto da @Alex gli eventi devono avvenire.. altrimenti che eventi sono?

    Siamo sicuri che gli eventi della form non siano scollegati ? Come sono stati creati questi Pulsanti ?

    Ad ogni modo esistono altri metodi per evitare che venga abbandonato un record in fase d'inserimento o aggiornamento e perderne il controllo.

    Ma in questo caso la tabella che vai ad aggiornare è priva di vincoli ? possibile si possa lasciare un record vuoto nella tabella? Possibile che non ci sia almeno un solo campo “Obbligatorio” o un campo che non ammette valori "Null" e/o altro… Che tabella è e quale il suo fine? 
    Non mi sembra sia strutturata a dovere questa Tabella… 

    29/05/2023 - StackPtr ha scritto:


    l'utente può cliccare “Aggiungi mancante” per iniziare a editare un nuovo record e immediatamente cliccare “Salva” o “Esci” lasciandomi un record vuoto in tabella.

    Non basta disabilitare dei pulsanti per garantire l'integrità di una tabella e del database… per esempio ci “sarebbero” Dirty, Undo e chi più ne ha ne metta… insomma, penso sia necessario un approccio un po' diverso a tal fine.
    Form.Dirty property (Access) | Microsoft Learn
    Form.Undo method (Access) | Microsoft Learn
    Form object (Access) | Microsoft Learn (Eventi/Metodi/Proprietà/etc etc etc)

    Se rispettate le regole di base, struttura della Tabella, librerie di Riferimento etc… dichiarato che il Db deve essere compatibile con le versioni precedenti, deve funzionare tutto regolarmente. 

  • Re: Disabilitare i pulsanti di una maschera

    29/05/2023 - @Alex ha scritto:


    Sei sicuro che vengano eseguiti gli EVENTI,,,?

    Hai messo un breackpoint per capire se il codice effettivamente viene eseguito…?

    Solitamente   mancato funzionamento del codice avviene in caso manchino dei riferimenti nelle librerie del VBA Excel/Word, qualche Activex non presente… ecc…

    Si, gli eventi sono sicuramente riconosciuti ed eseguiti, tutte le altre cose connesse all'evento sono eseguite tranne la disabilitazione dei pulsanti.

    Il dicorso dei riferimenti mancanti mi sembra quello che meglio centra il problema, dopo controllo.

    Grazie mille a entrambi per le preziose dritte.

    Ste

  • Re: Disabilitare i pulsanti di una maschera

    30/05/2023 - StackPtr ha scritto:


    29/05/2023 - @Alex ha scritto:


    Sei sicuro che vengano eseguiti gli EVENTI,,,?

    Hai messo un breackpoint per capire se il codice effettivamente viene eseguito…?

    Solitamente   mancato funzionamento del codice avviene in caso manchino dei riferimenti nelle librerie del VBA Excel/Word, qualche Activex non presente… ecc…

    Si, gli eventi sono sicuramente riconosciuti ed eseguiti, tutte le altre cose connesse all'evento sono eseguite tranne la disabilitazione dei pulsanti.

    Il dicorso dei riferimenti mancanti mi sembra quello che meglio centra il problema, dopo controllo.

    Grazie mille a entrambi per le preziose dritte.

    Ste

    …. con il debug passo passo segui il codice per capire come si comporta, in un attimo vedi subito cosa va e cosa non va.

    se mancano riferimenti alle librerie anche la semplice compilazione dovrebbe segnalarti eventuali anomalie.

    Curiosità… mi cambi il metodo di riferimento all'oggetto Me e al posto dell' Esclamativo ci metti il Punto ?

    Me.cmdAggiungiMancante.Enabled = False
    Me.cmdSalva.Enabled = False
    Me.cmdEsci.Enabled = False
  • Re: Disabilitare i pulsanti di una maschera

    Per capire come si comporta, in un attimo vedi subito cosa va e cosa non va.

    se mancano riferimenti alle librerie anche la semplice compilazione dovrebbe segnalarti eventuali anomalie.

    Curiosità… mi cambi il metodo di riferimento all'oggetto Me e al posto dell' Esclamativo ci metti il Punto ?

    Me.cmdAggiungiMancante.Enabled = False
    Me.cmdSalva.Enabled = False
    Me.cmdEsci.Enabled = False

    Non ho nessuna indicazione di errore, vedo solo che i pulsanti non vengono disabilitati.

    Durante la pausa pranzo dei miei colleghi oggi potrò collegarmi e vedere il discorso dei riferimenti, potrò anche provare quello che chiedi.

    Grazie

  • Re: Disabilitare i pulsanti di una maschera

    30/05/2023 - StackPtr ha scritto:


    Per capire come si comporta, in un attimo vedi subito cosa va e cosa non va.

    se mancano riferimenti alle librerie anche la semplice compilazione dovrebbe segnalarti eventuali anomalie.

    Curiosità… mi cambi il metodo di riferimento all'oggetto Me e al posto dell' Esclamativo ci metti il Punto ?

    Me.cmdAggiungiMancante.Enabled = False
    Me.cmdSalva.Enabled = False
    Me.cmdEsci.Enabled = False

    Non ho nessuna indicazione di errore, vedo solo che i pulsanti non vengono disabilitati.

    Durante la pausa pranzo dei miei colleghi oggi potrò collegarmi e vedere il discorso dei riferimenti, potrò anche provare quello che chiedi.

    Grazie

    Ma sai…. la mia è curiosità perchè sapevo che Me! si riferisce ai campi del recordset della form 
    mentre Me. si riferisce ai controlli della form

    Non vorrei sbagliare, ma mi sembra di ricordare una cosa di questo genere …e nel tuo caso potrebbe fare la differenza.

  • Re: Disabilitare i pulsanti di una maschera

    30/05/2023 - By65Franco ha scritto:


    Ma sai…. la mia è curiosità perchè sapevo che Me! si riferisce ai campi del recordset della form 
    mentre Me. si riferisce ai controlli della form

    Non vorrei sbagliare, ma mi sembra di ricordare una cosa di questo genere …e nel tuo caso potrebbe fare la differenza.

    Provato, non cambia niente.

    Controllato dentro i riferimenti, le librerie selezionate sono le stesse, a parte ovviamente la revisione (16.0 per me, 12.0 per loro).

  • Re: Disabilitare i pulsanti di una maschera

    In realtà la regola dell'uso di [.] rispetto a [!] è molto chiara ed un pochetto più tecnica…

    [.] Si riferisce a Proprietà, Metodi e/o Eventi di un Oggetto, ed attiva l'intellisense

    Me.Name					(property)
    Me.Caption				(property)
    DoCmd.RunCommand		(method)
    CurrentDb.OpenRecordSet	(method)
    Me.OnActivate			(event)

    [!] Si riferisce ai Membri di una Collection, la Form/Report sono membri della Collection Forms/Reports, i Controlli sono membri della Collection Controls, i Campi(Field) sono membri della Collection Fields ecc…!

    Me!TextBoxNome
    Forms!NomeForm!NomeControllo
    rs!Nome

    Quindi il [!] indica che la parte dopo è membri della parte che precede.

    Alternativa

    Me.Controls("TextBoxNome")
    Forms("NomeForm)".Controls("NomeControllo").Properties("Name")
    rs.Fields("Nome")

    Solitamente funzionano entrambi perchè Access controlla sempre l'appartenenza a Properties o Collection, ma ci sono delle eccezioni che Access non gestisce, ad esempio in caso di presenza di Spazi nel Nome, in questi casi solo usando [!] funiona, mentre se il Nome dell'oggetto è tra le parole riservate, ovviamente non funziona…!

    Esempio se chiamiamo un Controllo TextBox [Name] e scriviamo

     Me!Name

    Avremo molti problemi… [Name] è una parola riservata e solo con il [.] funziona senza problemi ma, farà riferimento alla Property Name non al Controllo [Name] che non si può usare…

  • Re: Disabilitare i pulsanti di una maschera

    30/05/2023 - @Alex ha scritto:


    In realtà la regola dell'uso di [.] rispetto a [!] è molto chiara ed un pochetto più tecnica…

    [.] Si riferisce a Proprietà, Metodi e/o Eventi di un Oggetto, ed attiva l'intellisense

    Me.Name					(property)
    Me.Caption				(property)
    DoCmd.RunCommand		(method)
    CurrentDb.OpenRecordSet	(method)
    Me.OnActivate			(event)

    [!] Si riferisce ai Membri di una Collection, la Form/Report sono membri della Collection Forms/Reports, i Controlli sono membri della Collection Controls, i Campi(Field) sono membri della Collection Fields ecc…!

    Me!TextBoxNome
    Forms!NomeForm!NomeControllo
    rs!Nome

    Quindi il [!] indica che la parte dopo è membri della parte che precede.

    Grazie @Alex… super!!!

    nei miei tanti cassettini della memoria c'è un tantino di polvere… ;)))   e in più gli anni passano inesorabilmente ;D

    30/05/2023 - StackPtr ha scritto:


    Provato, non cambia niente.

    Controllato dentro i riferimenti, le librerie selezionate sono le stesse, a parte ovviamente la revisione (16.0 per me, 12.0 per loro).

    Certo che sto' fatto è strano e non mi viene in mente altro da considerare… 

    Ma sempre per curiosità …  e se li rendi invisibili ?  esegue l'impostazione della proprietà ?

    Me.cmdAggiungiMancante.Visible = False
    Me.cmdSalva.Visible = False
    Me.cmdEsci.Visible = False
  • Re: Disabilitare i pulsanti di una maschera

    30/05/2023 - By65Franco ha scritto:

    Ma sempre per curiosità …  e se li rendi invisibili ?  esegue l'impostazione della proprietà ?

    Me.cmdAggiungiMancante.Visible = False
    Me.cmdSalva.Visible = False
    Me.cmdEsci.Visible = False

    Oramai per oggi non lo posso più provare altrimenti i colleghi mi infilzano…

    Aggiungo però una cosa che mi fa incupire parecchio… Con lo stesso metodo attivo e disattivo i campi per evitare le modifiche accidentali dei valori, sotteso agli eventi on click degli stessi pulsanti di cui sopra. Questi si bloccano e sbloccano correttamente, solo i pulsanti non vanno… mah.

  • Re: Disabilitare i pulsanti di una maschera

    30/05/2023 - StackPtr ha scritto:


    30/05/2023 - By65Franco ha scritto:

    Ma sempre per curiosità …  e se li rendi invisibili ?  esegue l'impostazione della proprietà ?

    Me.cmdAggiungiMancante.Visible = False
    Me.cmdSalva.Visible = False
    Me.cmdEsci.Visible = False

    Oramai per oggi non lo posso più provare altrimenti i colleghi mi infilzano…

    Aggiungo però una cosa che mi fa incupire parecchio… Con lo stesso metodo attivo e disattivo i campi per evitare le modifiche accidentali dei valori, sotteso agli eventi on click degli stessi pulsanti di cui sopra. Questi si bloccano e sbloccano correttamente, solo i pulsanti non vanno… mah.

    Ma ti trovi sulla Stessa Form oppure hai anche una SubForm ?

  • Re: Disabilitare i pulsanti di una maschera

    30/05/2023 - By65Franco ha scritto:

    Ma ti trovi sulla Stessa Form oppure hai anche una SubForm ?

    Tutto nella stessa form

Devi accedere o registrarti per scrivere nel forum
14 risposte