Scusami Alex, sinceramente non pensavo che potesse essere lì il problema, ma in qualche impostazione della form. Rimedio subito, ma devo spiegare un pò la situazione.
Ho un elenco di personale a cui sono assegnate varie qualifiche in vari settori, oltre che i corsi corrispondenti. Ho una query "madre" che racchiude l'elenco di tutti i Qualificati(
IdQualificato, CodFiscale, IdTipoCorso, IdTipoQualifica, ecc).
Devo effettuare ricerche incrociate tra chi possiede delle qualifiche di interesse (IdTipoQualifica) e chi ha affrontato determinati corsi (IdTipoCorso).
Ho una form con una serie di list box che mi permette di selezionare corsi/qualifiche da ricercare dove l'utente può decidere se utilizzare OR o AND tra i vari parametri.
La query che poi inserisco nella WhereClause viene originata di volta in volta a seconda dei valori selezionati.
Di seguito un esempio di una query ottenuta selezionado due valori IdTipoQualifica da ricercare con AND
SELECT CodFiscale FROM (SELECT CodFiscale, COUNT(CodFiscale) AS Conteggio FROM qry_QualificatiConTipoCorso WHERE IdTipoQualifica IN (2,4) GROUP BY CodFiscale) WHERE Conteggio >= (SELECT COUNT(*) FROM tbq_TipoQualifiche WHERE IdTipoQualifica IN (2,4))
E questa è una query originata per cercare i due stessi valori con OR
SELECT DISTINCT CodFiscale FROM qry_QualificatiConTipoCorso WHERE IdTipoQualifica IN (2,4)
Le due query funzionano e mi danno l'elenco dei codici fiscali per visualizzare poi l'elenco del personale.
Quando devo aprire la form, il predicato VB risultante, nel caso di ricerca con OR, è questo:
DoCmd.OpenForm "frmRisultatiRicercaQualificati", , , "[CodFiscale] = ANY (SELECT DISTINCT CodFiscale FROM qry_QualificatiConTipoCorso WHERE IdTipoQualifica IN (2,4))"
Ho fatto un test aprendo la form in questo modo e l'ordinamento funziona, quindi effettivamente il problema è nella query che uso nella WhereClause, ma non dovrebbe essere un semplice filtro?
DoCmd.OpenForm "frmRisultatiRicercaQualificati", , , "[CodFiscale] IN (""BBNLSN82E09F839A"", ""BNDVLR80H07A515M"")"