+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: Rimozione filtro maschera continua

  1. #1
    Virus84 non è in linea Novello
    Post
    19

    Rimozione filtro maschera continua

    Gentilissimo Forum Buonasera
    Sono un neofita autodidatta di Access e mi sto destreggiando abbastanza bene nella costruzione di database e maschere per uso personale, anche se di strada da fare ne ho molta e di cosa da imparare anche di piu...
    Vi pongo un quesito (sicuramente banale) alla quale stasera non riesco proprio a venirne a capo e mi sono deciso a chiedere aiuto a chi sicuramente di conoscenza ne ha molta di piu.
    Sono in possesso di una tabella chiamata Collezione Video formata da 7 campi (ID; Titolo;Regia; Contenuto; Formato;Anno;Attori)
    Ho creato una maschera continua in cui ho inserito 5 caselle combinate relativamente per i campi Titolo;Regia;Contenuto;Formato;Anno
    Nella maschera il campo Id non viene visualizzato
    Le 5 Combo lavorano in maniera sincronizzata e la maschera aggiorna perfettamente
    Ho aggiunto poi una Casella Di Testo dalla quale immettendo il nome di un attore contenuto nel campo Attori, Dopo Aggiornamento mi filtra la maschera continua a seconda del contenuto della casella di testo (TestoAttore)
    E fin qui ci siamo....
    Nell'intestazione della maschera ho aggiunto un pulsante (Refresh) che mi azzera il contenuto delle combo e della casella di testo e mi toglie il filtro applicato dalla casella di testo.
    Il pulsante azzera correttamente i controlli dell maschera, nella barra in fondo della maschera mi appare non filtrato ma quando vado a riselezionare una qualsiasi combo, non mi aggiorna la maschera, come se il filtro non fosse stato tolto...
    Infatti, se in questa condizione vado in modalità struttura maschera nel tab Dati, su opzione Filtro mi compare la dicitura Like="xxxx" dove xxxx sta per la stringa che avevo utilizzato in precedenza sulla casella di testo.
    Come faccio a eliminare definitivamente il filtro salvato in precedenza con il pulsante di refresh e continuare a utilizzare tranquillamente tutte le combo?
    Vi posto ora il codice Vba che ho utilizzato per i controlli della maschera sperando di riuscire a venirne a capo...
    Intanto ringrazio chiunque decida di dare qualche delucidazione in merito chiedendo perdono se l'argomento possa essere in qualche modo già stato trattato ma vi assicuro che ho cercato in lungo e in largo.
    Saluti
    Paolo

    codice:
    Option Compare Database
    
    Private Sub CboAnno_AfterUpdate()
    
    Me.Requery
    Me.Refresh
    Me.Repaint
    
    End Sub
    
    Private Sub CboContenuto_AfterUpdate()
    
    Me.Requery
    Me.Refresh
    Me.Repaint
    
    End Sub
    
    Private Sub CboFormato_AfterUpdate()
    
    Me.Requery
    Me.Refresh
    Me.Repaint
    
    End Sub
    
    Private Sub CboRegia_AfterUpdate()
    
    Me.Requery
    Me.Refresh
    Me.Repaint
    
    End Sub
    
    Private Sub CboTitolo_AfterUpdate()
    
    Me.Requery
    Me.Refresh
    Me.Repaint
    
    End Sub
    
    Private Sub Refresh_Click()
    
    CboTitolo = Null
    CboRegia = Null
    CboFormato = Null
    CboContenuto = Null
    CboAnno = Null
    TestoAttore = Null
    
    Me.FilterOn = False
    
    Me.Requery
    Me.Refresh
    Me.Repaint
    
    End Sub
    
    Private Sub TestoAttore_AfterUpdate()
    
    If Me.TestoAttore = Null Then
    Me.FilterOn = False
    Else
    Me.Filter = "[Attori] Like ""*" & Me!TestoAttore & "*"""
    Me.FilterOn = True
    End If
    
    Me.Requery
    Me.Refresh
    Me.Repaint
    
    End Sub
    Ultima modifica di AntonioG; 08-03-2016 16:58  Motivo: i tag code !

  2. #2
    SCvanni non è in linea Scolaretto
    Post
    476
    Salve è notte fonda ma ci provo.
    l'azione è "rimuovi filtro ordina" vedi tu dove.......

    P.s. Attento al tag code quando posti il codice (modalità avanzata > #)

    Notte!

  3. #3
    Virus84 non è in linea Novello
    Post
    19
    Quote Originariamente inviato da SCvanni Visualizza il messaggio
    Salve è notte fonda ma ci provo.
    l'azione è "rimuovi filtro ordina" vedi tu dove.......

    P.s. Attento al tag code quando posti il codice (modalità avanzata > #)

    Notte!
    Grazie per la risposta Scvanni
    Perdona la mia ignoranza ma l'azione rimuovi filtro\ordina come la genero?
    Stai dicendo di generare un filtro tipo nullo alla requery della maschera oppure esiste un azione specifica per annullare il filtro rimasto in memoria? Pensavo che Per l'annullamento di qualsiasi filtro bastasse il me.filteron impostato su False.....ed eventualmente l'azione di annullamento filtro la posso generare tramite vba oppure con una macro?
    Grazie

  4. #4
    SCvanni non è in linea Scolaretto
    Post
    476
    Salve,
    scusa il ritardo ma questo è un periodaccio.
    L'azione la puoi selezionare in una macro, io mastico pochino il VBA ma se ti può essere utile io procedo così :
    in ogni db che realizzo mi creo sempre una macro una query e una maschera che chiamo qServizio MServizio e aServizio (questa è una macro di servizio vuota la chiamo con la desinenza "a" per trovarmela al primo posto.
    Andiamo al tuo problema se nella macro "aServizio" scegli l'azione "Rimuovi filtro Ordina" e crei un pulsante (nella maschera "MServizi", senza autocomposizione, nella sezione EVENTI cerchi la macro "aSevizio", a questo punto (se access 2013) in alto a destra converti in Vba l'azione.
    Questo è un modus operandi mio che è più difficile a spiegarsi che a farsi e molto utile per chi mastica poco VBA.
    Per questa volta lo faccio io per te.
    Questo è il comando VBA vedi tu dove metterlo, chiaramente se lo usi all'interno del codice in una macro, invece è "Rimuovi filtro Ordina"

    codice:
    DoCmd.RunCommand acCmdRemoveFilterSort
    Notte

  5. #5
    OsvaldoLaviosa ora è in linea Topo di biblioteca
    Luogo
    Conversano
    Post
    2,995
    Credo di aver letto attentamente il primo post di Virus84.
    A cosa ti serve la MASCHERA CONTINUA?
    Cosa devi fare? Filtrare? Perchè non ti servi del "filtro in base a maschera"? Fa tutto lui e non hai bisogno di mettere in atto tutto quel codice.
    Non so. Spero di non aver travisato tutto il discorso.

    Quote Originariamente inviato da Virus84
    tabella chiamata Collezione Video formata da 7 campi (ID; Titolo;Regia; Contenuto; Formato;Anno;Attori)
    Ti consiglio di chiamare il campo IDVideo. È più esplicito e non fai confusione con altri campi ID di altre tabelle.
    Non pensi che il campo Attori non sia corretto messo lì? Si tratta di un campo multivalore?
    Io penso che Attori e Registi sono Artisti aventi Ruoli diversi ma in relazione molti-a-molti con CollezioneVideo.
    Io rivedrei la tua struttura tabelle così:

    Video
    IDVideo (PK)
    Titolo
    Contenuto
    Formato
    Anno

    Artisti
    IDArtista (PK)
    Cognome
    Nome

    ArtistiVideo
    IDAV (PK)
    IDArtista (numerico, FK)
    Ruolo (testo, FK)
    IDVideo (numerico, FK)

    Ruoli
    Ruolo (testo, PK)

    Relazioni:
    Video.IDVideo uno-a-molti ArtistiVideo.IDVideo
    Artisti.IDArtista uno-a-molti ArtistiVideo.IDArtista
    Ruoli.Ruolo uno-a-molti ArtistiVideo.Ruolo

  6. #6
    Virus84 non è in linea Novello
    Post
    19
    Quote Originariamente inviato da SCvanni Visualizza il messaggio
    Salve,
    scusa il ritardo ma questo è un periodaccio.
    L'azione la puoi selezionare in una macro, io mastico pochino il VBA ma se ti può essere utile io procedo così :
    in ogni db che realizzo mi creo sempre una macro una query e una maschera che chiamo qServizio MServizio e aServizio (questa è una macro di servizio vuota la chiamo con la desinenza "a" per trovarmela al primo posto.
    Andiamo al tuo problema se nella macro "aServizio" scegli l'azione "Rimuovi filtro Ordina" e crei un pulsante (nella maschera "MServizi", senza autocomposizione, nella sezione EVENTI cerchi la macro "aSevizio", a questo punto (se access 2013) in alto a destra converti in Vba l'azione.
    Questo è un modus operandi mio che è più difficile a spiegarsi che a farsi e molto utile per chi mastica poco VBA.
    Per questa volta lo faccio io per te.
    Questo è il comando VBA vedi tu dove metterlo, chiaramente se lo usi all'interno del codice in una macro, invece è "Rimuovi filtro Ordina"

    codice:
    DoCmd.RunCommand acCmdRemoveFilterSort
    Notte
    Grazie Scvanni,per l'aiuto e per il consiglio sul,modus operandi....ho capito benissimo il procedimento che utilizzi e mi,sembra un buon artificio per costruire applicazioni, io come dicevo,sul primo post sono un neofita di access e purtroppo a differenza tua, di macro sono quasi zero, preferendo un po di programmazione con vba....ma oltre che per sciogliere qualche dubbio sono qui per imparare e magari un giorno dispensare qualche consiglio anche io a chi ne avrà bisogno....
    Cmq proverò ad applicare il tuo metodo per la mia maschera prima di fare copia incolla del tuo codice....poi ti faro sapere...
    Intanto ti ringrazio e ti faccio tanti auguri per giorni migliori!!

  7. #7
    Virus84 non è in linea Novello
    Post
    19
    Quote Originariamente inviato da OsvaldoLaviosa Visualizza il messaggio
    Credo di aver letto attentamente il primo post di Virus84.
    A cosa ti serve la MASCHERA CONTINUA?
    Cosa devi fare? Filtrare? Perchè non ti servi del "filtro in base a maschera"? Fa tutto lui e non hai bisogno di mettere in atto tutto quel codice.
    Non so. Spero di non aver travisato tutto il discorso.


    Ti consiglio di chiamare il campo IDVideo. È più esplicito e non fai confusione con altri campi ID di altre tabelle.
    Non pensi che il campo Attori non sia corretto messo lì? Si tratta di un campo multivalore?
    Io penso che Attori e Registi sono Artisti aventi Ruoli diversi ma in relazione molti-a-molti con CollezioneVideo.
    Io rivedrei la tua struttura tabelle così:

    Video
    IDVideo (PK)
    Titolo
    Contenuto
    Formato
    Anno

    Artisti
    IDArtista (PK)
    Cognome
    Nome

    ArtistiVideo
    IDAV (PK)
    IDArtista (numerico, FK)
    Ruolo (testo, FK)
    IDVideo (numerico, FK)

    Ruoli
    Ruolo (testo, PK)

    Relazioni:
    Video.IDVideo uno-a-molti ArtistiVideo.IDVideo
    Artisti.IDArtista uno-a-molti ArtistiVideo.IDArtista
    Ruoli.Ruolo uno-a-molti ArtistiVideo.Ruolo
    Grazie Osvaldo per l'analisi fatta e per il consiglio sul filtro maschera da Menu....direi che la tua costruzione del db sia impeccabile!!!!Lasciami fare alcune precisazioni al riguardo....Io sto lavorando con Office 2016 e fino a qualche tempo fa maschere Query e macro,non sapevo nemmeno dove stessero di casa, la,mia conoscenza di Access si limitava solo alla misera tabellina compilata riga per riga ,senza nemmeno utilizzare la costruzione in struttura!!!
    Di fatti il mio db è una tabella compilata ormai qualche anno fa e nel campo [Attori] sono stati inseriti più nomi di Attori, non c'è un record singolo sul campo, per ogni attore....ecco il motivo per cui ho pensato di far filtrare quel campo in base a una casella di testo dove inserire parte del nome presente nel campo [Attori] ....siccome,non ho voluto modificare tutta la tabella mi sto arrangiando un po diciamo!
    La maschera continua mi serve per visualizzare magari in simultanea titoli di film fatti da uno stesso regista.....cosi sotto l'intestazione mi rimane comunque una lista di titoli,anche se dalle,combo non è selezionato nulla....
    Il filtro in base a maschera non mi piacerebbe utilizzarlo,perché la mia maschera si apre automaticamente a schermo intero in modalità pop-up quindi non avrei accesso al menu per l'attivazione del filtro in base a maschera.....o almeno mi pare!!!

  8. #8
    OsvaldoLaviosa ora è in linea Topo di biblioteca
    Luogo
    Conversano
    Post
    2,995
    Vorrei solo metterti in guardia dall'implementare codici VBA su una struttura non normalizzata. Oggi ci metti una pezza a colori così. Domani sorgerà un nuovo problema e metterai una seconda pezza a colori oppure una più grande sulla precedente. Dopodomani idem ecc... Un database che funziona solo su codici VBA ma in un ambiente non normalizzato rischia di perdere in prestazioni.
    Altri rischi sono che proverai a proporre nuovi quesiti al forum sempre più complicati e indecifrabili per i programmatori abituati a ragionare su almeno le basi della normalizzazione, con conseguente impossibilità di aiutarti.

  9. #9
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,463
    Puoi spiegare il motivo per cui esegui in sequenza tutte queste funzioni
    codice:
    Me.Requery
    Me.Refresh
    Me.Repaint
    Hai letto la guida ed hai trovato indicazioni che ti hanno suggerito questa cosa oppure è una tua interpretazione...?

    In entrambi i casi, vorrei evidenziarti che non servono a NULLA tutte... l'ultima meno che meno...!
    Esiste una differenza sostanziale tra le prime 2, che ti invito a comprendere leggendo la guida, ma, non vanno MAI eseguite entrambe.

    Peraltro, in caso venga utilizzata la proprietà FilterON, non deve essere usata proprio nessuna in quanto il FilterON già di suo attua l'aggiornamento...!

    Questi sono dettagli molto importanti.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  10. #10
    Virus84 non è in linea Novello
    Post
    19
    Osvaldo quoto in pieno ciò che dici, sicuramente quello che sto facendo non è proprio un lavoro pulito, diciamo che sto usando queste mie tabelle per fare pratica e logicamente essendo un autodidatta è normale che una volta ci metto una pezza, una volta sbaglio, una volta magari ci prendo pure!!
    A me piace capirle direttamente sul campo le cose, e quando sono alle prese con qualche ostacolo cerco di trovare la soluzione in base alle mie (poche fin'ora) conoscenze.....poi quando trovo l'intoppo magari mi ritrovo a chiedere aiuto come questa volta!
    Poi non è detto che magari in futuro mi ributto giu tabelle query maschere e macro in modo molto piu ordinato e pulito.....magari anche piu complesso!!!!

    Alex se devo essere sincero le tre proprietà Requery refresh e repaint in dettaglio non sono mai andato a fondo sul loro funzionamento......Studiando un pò la struttura di un gestionale che ho in azienda ho capito sommariamente la loro funzione, su ogni controllo che è presente nel gestionale sono presenti tutti e tre i comandi e cosi ho preso per buono che andassero inseriti tutti.....poi ieri mi sono accorto che il comando FilterOn ha gia incorporato il riaggiornamento della maschera, comunque ora che hai fatto questa precisazione andrò a studiarmi le proprietà di tutti e tre....

    Tornando al mio Db, ho provato ad inserire il codice RimuoviFiltroOrdina nel vba del pulsante Refresh della mia maschera.....
    Il filtro viene rimosso......e come da comando vengono pulite tutte le combo e la casella di testo......purtroppo però, quando vado a riselezionare un valore da una delle 5 combo la maschera non aggiorna...
    Se vado in modalità Struttura, mi accorgo che nuovamente nelle "Proprietà" della maschera, alla voce "Filtro" del tab "Dati", compare ancora il filtro che era stato attivato dalla casella di testo (ES: [Attori] Like "*clint*")....
    Perchè nè il comando Me.FilterOn = False, nè il comando suggeritomi da SCvanni lo rimuove?

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi