Newsgroup: it.comp.appl.access
Titolo: è possibile filtrare i record dalla maschera ??

salve a tutti...ho una maschera anagrafica con sottomaschera prodotti
e molti clienti non hanno prodotti... vorrei sapere se è possibile con
un pulsante di comando oppure interuttore filtrare la maschera in modo 
da avere solo i record
dei clienti senza prodotti inseriti...
grazie per l'aiuto.
giuseppe

 dei clienti senza prodotti inseriti...
Certo.
Ipotizzando che i clienti siano nella tabella T_Clienti, i prodotti in
T_Prodotti, e le due siano in relazione uno a molti, al pulsante fai
eseguire il codice
Me.Filter= "T_Clienti.ID_Cliente NOT IN ( SELECT DISTINCT ID_Cliente
FROM T_Prodotti )"
Me.FilterOn=True
cia'
Max

 wrote:

Non è più semplice avere una Query nella quale imposti la Relazione ad
esclusione dei campi non presenti contemporaneamente....???
In quel modo non devi toccare nulla.
@Alex

 ha scritto nel messaggio
news:3e41b288-95eb-4e35-971e-



-------------
Ciao Roccia... stavo provando la tua soluzione ma mi da errore di
compilazione, errore di sintassi...
ecco il codice inserito su Click del pulsante:
Private Sub noproduct_Click()
On Error GoTo Err_noproduct_Click
Me.Filter = "Anagrafe.ID_Anagrafe NOT IN ( SELECT DISTINCT ID "FROM
TabProdotti )"
Me.FilterOn = True
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_noproduct_Click:
    Exit Sub
Err_noproduct_Click:
    MsgBox Err.Description
    Resume Exit_noproduct_Click
    End Sub
riguardo alla soluzione di Alessandro Baraldi mi dispiace ma non ci ho
capito nulla...
come dicevo ho già una query che attongo il risultato voluto... ma il
risultato vorrei vederlo
filtrato nella maschera principale...
Ciao

     DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
A che ti serve questo?
(Molto piu' elegante fare me.refresh, ma in ogni caso in questa
situazione dovrebbe essere inutile)
Cia'
max

 DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
A che ti serve questo?
(Molto piu' elegante fare me.refresh, ma in ogni caso in questa
situazione dovrebbe essere inutile)
suggeriscimi come conviene meglio adattare il codice sotto... che ora 
non mi da + errore
però non mi filtra nulla... nel senso che premendolo mi esce la 
filtratura maschera ma di tutti
i record presenti mentre gli utenti "senza prodotti" sono 209 unità...
------------------------------------------
Private Sub noproduct_Click()
On Error GoTo Err_noproduct_Click
Me.Filter = "Anagrafe.ID_Anagrafe NOT IN ( SELECT DISTINCT ID FROM 
TabProdotti )"
Me.FilterOn = True
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_noproduct_Click:
    Exit Sub
Err_noproduct_Click:
    MsgBox Err.Description
    Resume Exit_noproduct_Click
    End Sub
Ciao e grazie 

 filtratura maschera ma di tutti
Per questo ho bisogno di sapere come si chiamano le tabelle e i
campi.
Lascia perdere descrizioni, prezzi, numeri di telefono, mi servono
solo i campi chiave e quelli che usi per collegare tra loro le
tabelle.
Cia'
Max

 ha scritto nel messaggio 
news:0e429d22-9dc3-4998...@24g2000hsh.googlegroups.com...



------------------------
Ciao Max...
allora le tabelle sono come precedentemente scritto ossia:
relazioni 1 >Molti
tabella Anagrafe = > ID_Anagrafe >Contatore > Chiave primaria
tabella TabProdotti = > IDAnagrafica > Numerico
spero bastino queste informazioni...
Ciao

 tabella TabProdotti = > IDAnagrafica > Numerico
Allora il filtro che devi applicare è
"Anagrafe.ID_Anagrafe NOT IN ( SELECT DISTINCT IDAnagrafica FROM
TabProdotti )"
che, in italiano, signicifa piu' o meno "non devi mai trovare il
contenuto nel campo ID_Anagrafe nel campo IDAnagrafica della tabella
TabProdotti"
Per il resto dovrebbe funzionare...
cia'
Max

 ha scritto nel messaggio
news:d9f10c87-390c-470a...@y21g2000hsf.googlegroups.com...





-----------------
in effetti ora funziona... purtroppo è lentissima ci mette 30 secondi
per filtrarmi 207
record... cmq mi accontento...;-))
 ultima cosa... è possibile, invece di utilizzare il bottone di comando
utilizzare l'interuttore in maniera che dopo il filtraggio dei record
degli utenti senza prodotti ripremendo l'interuttore la seconda volta
ritorni indietro alla maschera senza filtratura ??
ti ringrazio
Giuseppe

 ritorni indietro alla maschera senza filtratura ??
Per la lentezza... dipende in buona sostanza da come e' fatto il
database, mettere un indice su TabProdotti.IDAnagrafica dovrebbe
aiutare.
Per ilr esto, metti un interruttore, metti quella roba su afterupdate
dell'interruttore, e invece di me.filteron=true metti
me.filteron=me.InterruttoreFiltro
cia'
Max

 ha scritto nel messaggio 
news:5947cd1c-f726-486d-9d21-



------------------------
sei stato gentilissimo Max.. fatto ecco il codice...
siccome sull'interuttore ho messo la scritta "Utenti senza prodotti"
mi pareva di ricordare che sarebbe potuta uscire un'altra scritta 
sull'interuttore
stesso che dice di ritornare a tutti i record... cmq se non è possibile 
va bene così...
infine non ho capito come potrei mettere un indice in 
TabProdotti.IdAnagrafica..
puoi spiegarmi come si fa ??
Giuseppe
Private Sub Interruttore218_AfterUpdate()
Me.Filter = "Anagrafe.ID_Anagrafe NOT IN ( SELECT DISTINCT IDAnagrafica 
FROM TabProdotti )"
Me.FilterOn = Me.Interruttore218
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
End Sub 

 puoi spiegarmi come si fa ??
Ceppa, ma qui siamo ai fondamentali!
Apri la tabella tabprodotti in modalita' struttura, vai sul campo
idAnagrafica, indicizzato: SI (duplicati ammessi)
cia'
Max

 puoi spiegarmi come si fa ??
Ceppa, ma qui siamo ai fondamentali!
Apri la tabella tabprodotti in modalita' struttura, vai sul campo
idAnagrafica, indicizzato: SI (duplicati ammessi)
--------
Ciao Max.. ;.(( scusami ma ti avevo detto che stavo terra-terra con
Access...
cmq ho controllato e sul campo
idAnagrafica, indicizzato: SI (duplicati ammessi) è già messo così..
quindi ok... mi tengo la routine lenta... tanto fa quello che mi
serve...
... ma ho qualche problema...con la iif...  mi procure errore
di compilazione... impossibile trovare il metodo o il membro dei
dati....
devo magari mettere in Proprietà il nome dell'interuttore ??
ho provato anche su evento click ma fa la stessa cosa..
cmq ecco il codice completo
Private Sub Interruttore218_AfterUpdate()
Me.Filter = "Anagrafe.ID_Anagrafe NOT IN ( SELECT DISTINCT IDAnagrafica
FROM TabProdotti )"
If Me.Interruttore218.Caption = "entra" Then
Me.Interrutore218.Caption = "esci"
Else
Me.Interrutore218.Caption = "entra"
End If


 Me.Interrutore218.Caption = "entra"
Ehm... interrutore?
cia'
Max

 record... cmq mi accontento...;-))
io indagherei.
altrimenti quando saranno 10000 record che fai aspetti 30 minuti?
-- 
Ciao
Geppo 

 altrimenti quando saranno 10000 record che fai aspetti 30 minuti?
----------------
hai ragione...non si ci dovrebbe mai arrendere di fornte alle 
difficoltà...
ma come e dove posso controllare (IDAnagrafica in Tabprodotti è già 
indicizzato)???
Ciao 

 Ciao
Bisogna vedere com'è organizzato il db, non è semplice aiutarti.
La form principale è associata alla tabella Anagrafe e la subform alla 
tabella TabProdotti giusto?
La subform è collegata cosi?
campi secondari = IdAnagrafica 'campo tipo numerico indicizzato della 
tabella TabProdotti
campi master = ID_Anagrafe 'campo tipo contatore della tabella Anagrafe
-- 
Ciao
Geppo