Caselle combinate, filtri e record selezionati.

di il
10 risposte

Caselle combinate, filtri e record selezionati.

Salve a tutti ritorno con una domanda semplice (credo), ma sottile.

Ho una maschera singola “Mezzi” la quale in sola lettura mi permette di scorrerre tutti i mezzi a disposizione. Per passare da un mezzo all'altro è presente  una casella combinata. All'evento Dopo aggiornamento di questa casella combinata è presente il seguente codice:

Private Sub cboRicerca_AfterUpdate()

On Error GoTo cboRicerca_AfterUpdate_Err

    DoCmd.SearchForRecord , "", acFirst, "[Mezzo] = " & "'" & Screen.ActiveControl & "'"


cboRicerca_AfterUpdate_Exit:
    Exit Sub

cboRicerca_AfterUpdate_Err:
    MsgBox Error$
    Resume cboRicerca_AfterUpdate_Exit

End Sub

Supponiamo che per motivi che non sto qui a dire, la maschera si apra filtrata, cioè clicco su un qualcosa e la maschera si apra filtrata ad un particolare mezzo. Dunque è presente un filtro e la casella combinata non funziona se non disattivo quest'ultimo. Allora opto per il solito

If Me.FilterOn=True Then
Me.FilterOn=False
End If

Ho inserito questo codice nell'evento click e nell' evento su pulsante mouse giù ma nessuna di queste soluzioni mi soddisfa.

Ecco cosa vorrei.

Siamo alla maschera filtrata, allora clicco sulla casella combinata ed appare l'elenco dei mezzi, quando clicco sul mezzo scelto il filtro si disattiva e la maschera va a quel record. 

Nelle soluzioni che vi ho elencato sopra il filtro viene si disattivato, ma in un caso devo cliccare sulla freccia giù due volte in un altro caso solo una volta, ma in entrambi i casi la maschera ritorna sempre al primo record e dunque devo fare due volte la stessa scelta. 

Anche se la maschera è il sola lettura la casella combinata funziona inserendo sull'evento Su attivato il solito 

Private Sub cboRicerca_GotFocus()
Me.AllowEdits = True

End Sub

Come mi suggerite di procere? Grazie

10 Risposte

  • Re: Caselle combinate, filtri e record selezionati.

    Se invece usi questo metodo:

    Private Sub cboRicerca_AfterUpdate()
    
    On Error GoTo cboRicerca_AfterUpdate_Err
    
        Me.Filter= "[Mezzo] = " & "'" & Screen.ActiveControl & "'"
    	Me.FilterOn=true
    
    cboRicerca_AfterUpdate_Exit:
        Exit Sub
    
    cboRicerca_AfterUpdate_Err:
        MsgBox Error$
        Resume cboRicerca_AfterUpdate_Exit
    
    End Sub
  • Re: Caselle combinate, filtri e record selezionati.

    Mouse down??

    Se vuoi che dopo aver scelto dalla combo box un mezzo, che suopongo esista in quanto la popoli dalla tabella mezzi, lancia questo:

    https://support.microsoft.com/it-it/office/propriet%C3%A0-onchange-94406595-4ff3-45cb-a628-95ddcab952ee

  • Re: Caselle combinate, filtri e record selezionati.

    08/06/2023 - @Alex ha scritto:


    Se invece usi questo metodo:

    Private Sub cboRicerca_AfterUpdate()
    
    On Error GoTo cboRicerca_AfterUpdate_Err
    
        Me.Filter= "[Mezzo] = " & "'" & Screen.ActiveControl & "'"
    	Me.FilterOn=true
    
    cboRicerca_AfterUpdate_Exit:
        Exit Sub
    
    cboRicerca_AfterUpdate_Err:
        MsgBox Error$
        Resume cboRicerca_AfterUpdate_Exit
    
    End Sub

    Grazie della risposta. Ho provato ad usare il tuo metodo, ma non toglie il filtro…

  • Re: Caselle combinate, filtri e record selezionati.

    08/06/2023 - Nat ha scritto:


    Grazie della risposta. Ho provato ad usare il tuo metodo, ma non toglie il filtro…

    E' perchè non ti impegni ;)    poi non dire che non te l'avevo detto ;D

    Che vuol dire che non ti toglie il filtro ?

    Per esempio puoi semplicemente metterlo a blank e applicarlo:

    Me.Filter = ""
    Me.FilterOn = True

    e al primo refresh della Form non risulterà filtrata.

    Poi dipende cosa deve fare la form e come l'hai progettata e i metodi possono cambiare di conseguenza.

    ;)

  • Re: Caselle combinate, filtri e record selezionati.

    08/06/2023 - Nat ha scritto:

    b

    Grazie della risposta. Ho provato ad usare il tuo metodo, ma non toglie il filtro…

    Effettivamente concordo con Franco, le risposte di questo tipo… non hanno senso di essere date, sono sterili e sei tu a dover dare chiarezza su come ti muovi.

    Sicuramente sbagil perchè quel metodo assolutamente funziona, ma la premessa è come hai passato i precedenti criteri, se hai usato una Query è evidente non possa toglierli.. ed è quì che serve avere le idee chiare… e tu mi sembra non le abbia.

  • Re: Caselle combinate, filtri e record selezionati.

    “Supponiamo che per motivi che non sto qui a dire, la maschera si apra filtrata, cioè clicco su un qualcosa e la maschera si apra filtrata ad un particolare mezzo. Dunque è presente un filtro e la casella combinata non funziona se non disattivo quest'ultimo”

    1)Come fai a filtrare per quel mezzo?

    “Ho inserito questo codice nell'evento click e nell' evento su pulsante mouse giù ma nessuna di queste soluzioni mi soddisfa.”

    2) quando fai “mouse giù” per aprire la tendina del combo esegui il metodo

    3) quando rilasci il pulsante parte il metodo click ed esegui per la seconda volta il filtro

    4) quando selezioni dalla tendina fai di nuovo click ed esegui ancora il filtro…

    Usa SOLO il metodo change del combobox e il codice che usi all'apertura della maschera.

    Ovviamente devi anteporre al codice me.filteron=false e alla fine del codice me.filteron=true

    Però sarebbe utile  capire cosa fai per filtrare all'apertura…

  • Re: Caselle combinate, filtri e record selezionati.

    09/06/2023 - sihsandrea ha scritto:


    ….

    Ovviamente devi anteporre al codice me.filteron=false e alla fine del codice me.filteron=true

    Però sarebbe utile  capire cosa fai per filtrare all'apertura…

    Non è così…!

    Basta cambiare la proprietà Filter e forzare il FilterOn, il poroblema è proprio come Filtra, sono per scommettere una birretta che usa una Query con parametri, o meglio con una WHERE condition.

  • Re: Caselle combinate, filtri e record selezionati.

    Mah! Male non fa. 

    Del giocattolo access ho ricordi adolescenziali.

    Dice che: “Nelle soluzioni che vi ho elencato sopra il filtro viene si disattivato, ma in un caso devo cliccare sulla freccia giù due volte in un altro caso solo una volta, ma in entrambi i casi la maschera ritorna sempre al primo record e dunque devo fare due volte la stessa scelta. ”

    Usando lo stesso codice sia su click che mousedown mi sembra ovvio il comportamento del filtro.

    Il fatto che va al primo record la dice lunga… mi sa che a monte c'è una condizione.

    “Filtro” che parola obsoleta! Una bella query e via!

    Poi inserire codice su una combobox sia su click che su down non ha senso. Non ha senso nessuno dei due metodi. La ricerca va fatta nel momento in cui il testo della combo cambia, su change, appunto.

  • Re: Caselle combinate, filtri e record selezionati.

    09/06/2023 - sihsandrea ha scritto:


    Mah! Male non fa. 

    Io lo eviterei, mi spiace insistere sono pure io nostalgico ma “forse” ho ricordi meno sbiaditi ;-)

    Il FilterOn iniziale, genera traffico dati inutile, dal momento che rimuove il filtro e recupera tutta la Tabella, ed un requery dovuto al ricaricamento, che impatta su alcuni aspetti da considerare, spostamento del Bookmark ecc...

    Del giocattolo access ho ricordi adolescenziali. 

    Simpatico essere nostalgici… tornassi a quando avevo 20anni…

    Dice che: “Nelle soluzioni che vi ho elencato sopra il filtro viene si disattivato, ma in un caso devo cliccare sulla freccia giù due volte in un altro caso solo una volta, ma in entrambi i casi la maschera ritorna sempre al primo record e dunque devo fare due volte la stessa scelta. ”

    Usando lo stesso codice sia su click che mousedown mi sembra ovvio il comportamento del filtro.

    Il fatto che va al primo record la dice lunga… mi sa che a monte c'è una condizione.

    “Filtro” che parola obsoleta! Una bella query e via!

    Poi inserire codice su una combobox sia su click che su down non ha senso. Non ha senso nessuno dei due metodi. La ricerca va fatta nel momento in cui il testo della combo cambia, su change, appunto.

    Sicuramente, come ho premesso, ci sono una serie di stranezze impossibili da comprendere, è evidente che l'approccio non sia strutturato e pienamente consapevole della corretta tecnica… 

    Query Parametriche come sempre, si gestiscono i Parameters, si evita Query Injection ecc…  

  • Re: Caselle combinate, filtri e record selezionati.

    09/06/2023 - sihsandrea ha scritto:


    Poi inserire codice su una combobox sia su click che su down non ha senso. Non ha senso nessuno dei due metodi. La ricerca va fatta nel momento in cui il testo della combo cambia, su change, appunto.

    Ma sai quante volte gli ho detto di studiare e approfondire gli Eventi ? 
    Si impegna, però non ha sufficienza…. ma è bravo !  ;))

    A parte gli scherzi, c'è un pò di confusione, tante cose da rimettere in ordine e tanti argomenti da studiare. 
    Ci mette impegno, accetta le critiche e ci prova costantemente… 
    Insomma, sta facendo esperienza, a forza di sbatterci il naso, sicuramente qualcosa impara. Vedo che la volontà non gli manca. ;) 

Devi accedere o registrarti per scrivere nel forum
10 risposte