Convalida a spunta in maschera

di il
6 risposte

Convalida a spunta in maschera

Buonasera a tutti, sono nuovo e ho un piccolo problema. Vorrei rendere enabled un pulsante attraverso una convalida a spunta vero/falso direttamente all'apertura della maschera(se è possibile), premetto che attraverso una query lo sò fare ma volevo saltare questo lavoro.Grazie

6 Risposte

  • Re: Convalida a spunta in maschera

    Non ho capito cosa c'entra la Query, mi pare nulla con la determinazione del pulsante, ma spiega come faresti con una Query a condizionare la proprietà ENABLED del Pulsante, sono curioso.

    Direi che serve capire meglio operativamente cosa devi fare, la selezione della Spunta/Validazione deve avvenire ogni volta oppure una volta fatta deve essere ricordata/Memorizzata…?

    Se Memorizzata intendi per la sessione in uso o anche alle successive aperture…?

    Stai parlando di Maschera SINGOLA o CONTINUA, questo Button deve essere condizionato per ogni Record o solo sulla maschera poi vale sempre per tutti …?

    Spiega meglio l'esigenza direi che di tecnico hai detto poco o nulla.

  • Re: Convalida a spunta in maschera

    Grazie per la risposta Alex ora mi spiego.Devo rendere alternativamente due pulsanti in una maschera inabilitati o invisibili la prima volta all'apertura della maschera poi attraverso un pulsante di una maschera diversa ma non riesco a farlo direttamente sui pulsanti cosi potrei usare una convalida di spunta ma anche qui ho problemi perche la situazione non cambia. Con una query, anzi con piu query di aggiornamento convaliderei il campo e quando questo e “vero” o “falso” mi rende invisibile il pulsante. Un lavoro inutile sulla spunta perche penso si possa fare direttamente sui pulsanti invece per quanto riguarda l'esigenza e quella di non chiudere la maschera (perche uno dei pulsanti è di chiusura) senza aver prima aggiornato la maschera al riavvio della prima maschera devo ricominciare il ciclo con solo uno dei due pulsanti invisibili o inabilitati. 

  • Re: Convalida a spunta in maschera

    Premesso che leggere e capire quello che hai scritto è complesso… sarà colpa mia…

    Se l'obiettivo è di non chiudere la Maschera, non si pasticcia con i Pulsanti come hai pensato, anche perchè basta premere ALT+F4 e la maschera si chiude ugualemente, quindi la tua soluzione è sbagliata.

    L'inibizione alla chiusura si realizza intercettando l'evento UNLOAD e forzando a TRUE il parametro CANCEL…

    Private Sub Form_Unload(Cancel As Integer)
    	Cancel=TuoValore
    End Sub

    Fintanto che la Variabile [TuoValore] = True, l'evento verrà inibito, quando modificherai a False la variabile la maschera si potrà chiudere.

    Solitamente non si condizionano Maschere da altre maschere, o meglio si dovrebbe evitare di realizzare legami rigidi, le maschere sono Oggetti e se serve si passano parametri all'apertura o si predispongono Properties per operare sui dati… il metodo cambia se la maschera è aperta come Modale o meno…!

    Sicchè se usi OpenForm, in modalità [AcWindowMode = acDialog] si usa il parametro OpenArgs per passare un dato condizionante

    Sub OpenForm(FormName, [View As AcFormView = acNormal], 
    			 [FilterName], 
    			 [WhereCondition], 
    			 [DataMode As AcFormOpenDataMode = acFormPropertySettings], 
    			 [WindowMode As AcWindowMode = acWindowNormal], 
    			 [OpenArgs])
        Membro di Access.DoCmd

    Da usare così:

    DoCmd.OpenForm "NomeForm", , , , , acDialog, True
    

    su LOAD della Form si recupera il parametro e  si gestisce il condizionamento…

    Option Compare Database
    Option Explicit
    
    Private blInhibitClose	As Boolean
    
    Private Sub Form_Load()
        If Len(Me.OpenArgs & vbNullstring)>0 Then blInhibitClose=cbool(Me.OpenArgs)
    End Sub

    Poi quando hai le condizioni per chiudere la Form, modifichi il valore della Variabile [blInhibitClose] e la form si chiude.

    Se poi vuoi anche condizionare lo stato del Button…

    Option Compare Database
    Option Explicit
    
    Private blInhibitClose	As Boolean
    
    Private Sub Form_Load()
        If Len(Me.OpenArgs & vbNullstring)>0 Then 
        	blInhibitClose=cbool(Me.OpenArgs)
        	Me!NomeButton.Enabled=blInhibitClose
        End if
    End Sub
  • Re: Convalida a spunta in maschera

    Caro Alex prima di leggere il tuo post volevo inviarti il db per fartelo vedere ma ora penso di aver fatto bene a non postarlo,penso mi avresti preso a bastonate. Ho quasi 75 annienta ho la terza media mi diletto,per tenere in allenamento la mente, ha fare questi db per parenti o amici.Tu mi diresti senz’altro di fare altro ma cosa vuoi mi diverto.Comunque proverò ad applicare ciò che hai scritto. Grazie

  • Re: Convalida a spunta in maschera

    Questo è un Forum tecnico, e spesso chi risponde è un tecnico e risponde come tale… 

    Diciamo che ognuno usa lo strumento come ritiene, per lavorare o per giocare o passare il tempo, il problema è che solitamente quando si fanno domande, salvo avere risposte da chi non ha competenza, capita che rispondano persone che usano lo strumento in modo più avanzato ed ovviamente la risposta che si riceve è completa di logica di sviluppo di esperienza e di metodo indice di una visione più ampia volta a trasmettere concetti di come si opera… sta a chi poi legge approfittarne se vuole.

    Non mandare i tuoi DB per visione, perchè non ha senso a prescindere, si usa un DEMO solo se il problema non si riesce ad inquadrare e diventa necessario un Demo di chiarimento, non mi pare il tuo caso, il mio era un appunto alla chiarezza espositiva.

    P.S. il fatto tu abbia la tua età non significa nulla… hai fatto una domanda ed una risposta tecnica vale per te che ci giochi come per un 25enne che inizia a lavorarci.

  • Re: Convalida a spunta in maschera

    Chapeau…..

Devi accedere o registrarti per scrivere nel forum
6 risposte