Newsgroup: it.comp.appl.access
Titolo: Filtro su query basato su tutti i record di un'altra tabella

Salve, 
devo filtrare una query per escludere tutti i record che hanno il campo "Provenienza" presenti in un'altra tabella.
Ho provato inserendo nei criteri della query 
<>[t_Provenienza]![Provenienza]
ma non funziona.
Ho poi creato una maschera basata su questa tabella e provato a inserire
<>[Maschere]![M_Provenienza]![Provenienza]
ma non mi filtra tutte le provenienze.
 
Attualmente la formula funzionante che ho messo nei criteri della query per ottenere ciò che voglio è questa:
<>"Vicenza" and <>"Brescia" and <>"Rimini" and <>"Verona and....ecc
Dato che ci sono una decina di località inserite in questa formula e se ne potranno aggiungere altre in seguito, volevo creare un modo più pratico nel quale l'operatore possa andare ad aggiungere le nuove località. Ho quindi pensato di creare una tabella dove inserire le provenienze e fare lavorare l'operatore su questa tabella tramite una maschera per le aggiunte future. Tutte queste "provenienze" dovranno essere escluse dal recordset risultanti della query.
 
Spero di essere riuscito a spiegare.
Grazie e buone feste.
 
Andrea

Andrea Pettenon formulated on Monday :

1 - Dalla tabella ProvenienzeEscluse che hai già creato trai
    una query che mostri un unico campo Provenienze.
2 - Nella query che contiene il tutto, nei Criteria del campo
    Provenienze inserisci:
    Not In('la stringa sql della query generata al punto 1')
 
Bruno


Che bel regalo che mi hai fatto! Grazie Bruno, buon Natale.

Il giorno martedì 25 dicembre 2018 00:32:34 UTC+1, Bruno Campanini ha scritto:

Perdonami, con questa soluzione che mi piace tantissimo, ho il problema che quando esegue me.requery dopo avere aggiunto una località da escludere, ci mette tanto tempo ad eseguire la query, mentre prima era veloce. Come mai questa soluzione porta a questo costo in termini di tempo? C'è un trucco per ovviare?
 
Grazie di nuovo


Premetti ai nomi delle località da escludere qualcosa come "ZZ_" e nei
Criteria della query che le deve escludere, anziché "Not In(...",
srivi Left([Provenienze],2)<>"ZZ"
 
Bruno

 Grazie di nuovo
 
non è molto chiaro quale sia la lista di campi che devi ottenere come risultato
 
però la questione della "esclusione dei presenti in un'altra lista" 
ha un' altra (forse più propria) risoluzione:
quella del join esterno (o left join), se la puoi applicare nel tuo caso
 
riporto uno dei link con una sua descrizione 
https://www.fmsinc.com/microsoftaccess/query/outer-join/index.html
 
 
e penso che dovrebbe venir fuori qualcosa del genere:
 
SELECT table_conTutte.destinazione
FROM table_conTutte LEFT JOIN table_questeNO ON table_conTutte.destinazione = table_questeNO.destinazione
WHERE table_questeNO.destinazione) Is Null
 
tabella "principale"--->table_conTutte
tabella "dei criteri"--->table_questeNO
il campo destinazione DEVE essere definito in modo "uguale" nelle due tabelle
(per poter applicare il join)
 
- la Select può contenere altri campi
- potresti avere necessità di raggruppamento se estrai solo le destinazioni dalla tabella "principale" e queste sono ripetute nei vari record 
 
 


Non posso, perchè purtroppo le località da escludere vengono caricate ogni volta sempre nello stesso modo e non è una mia discrezione.

Andrea Pettenon explained :

Allora segui le istruzioni di GiorgioDaPrato... io non ci avevo pensato
eppure è la cosa migliore.
 
Bruno