Newsgroup: it.comp.appl.access
Titolo: FilterOn = False su due sottomaschere

Salve, o ancore di salvezza!
Ho fatto una maschera "mStrutture" che è 'nu babbà, con tre
sottomaschere, per indicare i dati rispettivamente di CatA, CatB e
CatC. Per ogni CatA ci sono dei sottodati in CatB, per ogni CatB ci
sono dei CatC; purtroppo, alcuni CatC dipendono da un CatA (la cosa
non l'ho decisa io... sigh).
Orbene, le maschere mCatA e mCatB hanno un pulsante di fianco ad ogni
record, che mi permette di visualizzare i soli dati imparentati. Per
esempio, premendo un pulsante in mCatA filtro i CatB e CatC che da
quel record dipendono; premendo invece un pulsante in mCatB, evidenzio
il CatA "proprietario" in mCatA, e filtro i CatC dipendenti in mCatC.
Il filtraggio avviene attraverso comandi Filter = "criterio".
Nella maschera mStrutture ho messo un pulsante per rivedere tutti i
record in tutte e tre le maschere, con due comandi FilterOn = False
per le mCatB e mCatC.
I comandi sono così:
Forms!mStrutture!smCatB.Form.FilterOn = False
dove smCatB è il controllo che contiene la maschera mCatB. Stesso per
mCatC.
Delle due istruzioni però mi funziona solo quella eseguita per prima,
e siccome dopo un filtro da mCatA entrambe le altre sottomaschere
risultano filtrate, una delle due mi resta filtrata anche dopo,
esattamente quella a cui mi riferisco con il secondo FilterOn = False.
Domande:
1 - la soluzione, por favor!
2 - esiste, semmai, un metodo più pratico? Faccio presente che le tre
maschere sono basate su query che uso anche per altre elaborazioni.
Grazie a tutti.
Riccardo

 ha scritto nel
messaggio news:d01fc9e3.04031...@posting.google.com...

Una soluzione più pratica sarebbe quella di collegare con "Collega Campi
master/secondari" le sottomaschere visto che dipendono l'una dall'altra.
Così come filtri la prima le altre visualizzano (se presenti) i dati messi
in relazione...
Ciao.
--
Sergio MAZZA

 Ciao.
Sono d'accordo. Il problema è che la mStrutture contiene tre
sottomaschere in modalità maschere continue, e non un record
visualizzato in modalità maschera singola e una sottomaschera. I
pulsanti di selezione sono in due delle sottomaschere, appunto smCatA
e smCatB. Il fatto è che, all'apertura di mStrutture, vorrei poter
vedere l'elenco completo; infatti, nelle mie intenzioni, la mStrutture
mi dovrebbe dare anche la possibilità di selezionare un record, in una
qualsiasi delle sottomaschere, per modificare i dati.
Ho provato, sul tuo suggerimento, a collegare le sm, ma posso farlo
solo in relazione a un record della maschera principale. Questa però
non ha dati; quando ho provato a mettere un'origine record nella
maschera principale, la prima sm mi ha visualizzato, ragionevolmente,
solo un record, e le altre due solo i record dipendenti da quello.
Corretto, ma non è quello che volevo.
Sto cogitando per veder di trovare una soluzione diversa, ma per ora
sono fermo all'attuale.
Saluti e grazie.
Riccardo


Puoi mettere in relazione le sottomaschere anche tramite il contenuto di una
casella di testo non associata; comunque invia il codice che utilizzi per
filtrare e annullare la selezione che si controlla...
Ciao.
--
Sergio MAZZA

 Ciao.
Ciao, buona serata e grazie.
Riccardo

 ha scritto nel
messaggio news:d01fc9e3.04031...@posting.google.com...

Prova, dopo aver tolto il filtro ad eseguire un requery:
Es.
Forms!mStrutture!smUope.Form.Requery
Ciao.
-- 
Sergio MAZZA

 Ciao.
Ahimč, ho gią provato Requery, proprio come me l'hai passata, Refresh,
Recalc, e anche invocazioni Voodo e mantra indiani: nisba.
Ciao.
Riccardo

 ha scritto nel
messaggio news:d01fc9e3.04031...@posting.google.com...

Scusa ma ho rivisto il tuo codice e mi sembra che questa riga sia errata:
Forms!mStrutture!smUope.Form.FilterOn = True
dovrebbe essere:
Forms!mStrutture!smCatC.Form.FilterOn = True
visto che prima imposti il filtro su CatB e lo attivi, poi lo fai su CatC e
lo dovresti attivare no?
Poi; quando vuoi annullare l'effetto del filtro azzeralo prima di
disattivarlo:
Forms!mStrutture!smCatB.Form.Filter = ""
Forms!mStrutture!smCatB.Form.FilterOn = False
Forms!mStrutture!smCatC.Form.Filter = ""
Forms!mStrutture!smCatC.Form.FilterOn = False
Poi, questo pezzo di codice non l'ho capito; che centra la form "smUope"?
Forms!mStrutture!smUope.Form.Filter = "[stru] = " & Forms!mStrutture!stru
Forms!mStrutture!smUope.Form.FilterOn = True
e filtra solo smCatC.
Ciao.
--
Sergio MAZZA

 Ciao.
Scusa: ho messo riferimenti misti nell'esempio.
In realtà le seguenti:
    Forms!mStrutture!smUope.Form.Filter = "[stru] = " &
Forms!mStrutture!stru
    Forms!mStrutture!smUope.Form.FilterOn = True
vanno lette così:
    Forms!mStrutture!smCatC.Form.Filter = "[stru] = " &
Forms!mStrutture!stru
    Forms!mStrutture!smCatC.Form.FilterOn = True
Comunque ho provato:
    Forms!mStrutture!smCatC.Form.Filter = ""
    Forms!mStrutture!smCatC.Form.FilterOn = False
e poi anche senza la prima istruzione; poi ho provato ad aggiungere un
Requery come terza istruzione; tutto inutile. La cosa che mi fa
impazzire è che
    Forms!mStrutture!smCatB.Form.FilterOn = False
    Forms!mStrutture!smCatC.Form.FilterOn = False
fa funzionare la prima ma non la seconda. Se inverto l'ordine
    Forms!mStrutture!smCatC.Form.FilterOn = False
    Forms!mStrutture!smCatB.Form.FilterOn = False
allora aggiorno la smCatC e non la smCatb. Sembrerebbe proprio che il
problema sia: "non puoi azzerare due filtri in sequenza" e se becco
chi l'ha deciso lo picchio...
Ciao
Riccardo



Allora, mi sono creato un esempio; tre sottomaschere visualizzazione
maschere continue (sub1, sub2, sub3). Sub1 e Sub2 hanno un bottone
(bttnFiltra) per ogni record; sub1.bttnFiltra "imposta" una selezione a sub2
e sub2.bttnFiltra lo imposta a sub3.
Spero fin qui di aver capito il tuo problema.
(se è così) Ho comunque verificato che la terza sottomaschera non viene
rimosso il filtro... Mah!
Ora però hai un'altra via, quella di associare un recordsource ad ogni
sottomaschera. Io ho fatto così anche per il bottone generale che ripristina
i recordsource...
Ciao.
--
Sergio MAZZA

 Ciao.
Ti dirò, il fatto che succeda anche a te mi conforta. Non per il "mal
comune mezzo gaudio", ma perché sospettavo una scemenza di mia
produzione da qualche parte.
Avevo anche mandato un altro messaggio, ieri, in cui ti dicevo appunto
che, spulciando nel forum, mi ero risolto a usare il metodo
RecordSource, in particolare alla luce del seguente articolo
http://www.granite.ab.ca/access/performanceforms.htm
che qualcuno segnalava proprio in questi giorni.
Così, uso un FilterOn = False per la prima maschera e un RecordSource
per la seconda. Credo anzi che terrò presente la tecnica per un uso
generale.
Non so più con che parole esprimere la mia gratitudine per i forum e
tutta la gente che devolve tempo pazienza e competenze.
Ciao
Riccardo

 Riccardo
Ciao.
--
Sergio MAZZA