Buon giorno,
qualche giorno fa ho scritto un thread riguardo una mia difficoltà nel scrivere una query che avesse come criteri delle caselle combinate. Dopo un pò di peripezie sono riuscito (più o meno nel mio intento): il mio scopo era quello di avere una query che pescasse che filtrasse i risultati in base ai valori scelti in delle combobox di una maschera.
Fino a che sono inclusi nei criteri due combobox... ok. Ma ora che devo inserire le restanti due, ho paura di avere sbagliato a scrivere il codice di sql, perchè mi restituisce non solo i valori di ciò che ho scelto nelle combobox ma anche altri (non tutti cmq).
Cosa ho sbagliato?
Codice con due combobx incluse:
PARAMETERS [forms]![Visualizza dati]![CboAnno] Long, [forms]![Visualizza dati]![CboDitta] Text ( 255 );
SELECT Round(Avg([Misurazioni]![assenza_sorgente]),4) AS MF, Round(Avg([Misurazioni]![con_sorgente]),4) AS ML, [ML]-[MF] AS Ms, Round(Var([Misurazioni]![assenza_sorgente]),4) AS [?F^2], Round(Var([Misurazioni]![con_sorgente]),4) AS [?L^2], Round(Sqr(Nz(Var([Misurazioni]![assenza_sorgente]),0)+Nz(Var([Misurazioni]![con_sorgente]),0)),4) AS ?s, Round([Ms]+(Sqr(Nz(Var([Misurazioni]![assenza_sorgente]),0)+Nz(Var([Misurazioni]![con_sorgente]),0)))*3,4) AS [Estremo superiore], Round([Ms]-(Sqr(Nz(Var([Misurazioni]![assenza_sorgente]),0)+Nz(Var([Misurazioni]![con_sorgente]),0)))*3,4) AS [Estremo inferiore], 3*[?s] AS 3?s, Misurazioni.ditta, Misurazioni.anno
FROM Misurazioni
GROUP BY Misurazioni.ditta, Misurazioni.anno
HAVING (((Misurazioni.ditta)=[Maschere]![Visualizza dati]![CboDitta]) AND ((Misurazioni.anno)=[Maschere]![Visualizza dati]![CboAnno])) OR (((Misurazioni.anno)=[Maschere]![Visualizza dati]![CboAnno]) AND (([Maschere]![Visualizza dati]![CboDitta]) Is Null)) OR (((Misurazioni.ditta)=[Maschere]![Visualizza dati]![CboDitta]) AND (([Maschere]![Visualizza dati]![CboAnno]) Is Null)) OR ((([Maschere]![Visualizza dati]![CboDitta]) Is Null) AND (([Maschere]![Visualizza dati]![CboAnno]) Is Null));
codice (sbagliato) con incluse 4 combobox:
PARAMETERS [forms]![Visualizza dati]![CboAnno] Long, [forms]![Visualizza dati]![CboDitta] Text ( 255 ), [forms]![Visualizza dati]![CboOggetto] Text ( 255 ), [forms]![Visualizza dati]![CboDocumento] Text ( 255 );
SELECT Round(Avg([Misurazioni]![assenza_sorgente]),4) AS MF, Round(Avg([Misurazioni]![con_sorgente]),4) AS ML, [ML]-[MF] AS Ms, Round(Var([Misurazioni]![assenza_sorgente]),4) AS [?F^2], Round(Var([Misurazioni]![con_sorgente]),4) AS [?L^2], Round(Sqr(Nz(Var([Misurazioni]![assenza_sorgente]),0)+Nz(Var([Misurazioni]![con_sorgente]),0)),4) AS ?s, Round([Ms]+(Sqr(Nz(Var([Misurazioni]![assenza_sorgente]),0)+Nz(Var([Misurazioni]![con_sorgente]),0)))*3,4) AS [Estremo superiore], Round([Ms]-(Sqr(Nz(Var([Misurazioni]![assenza_sorgente]),0)+Nz(Var([Misurazioni]![con_sorgente]),0)))*3,4) AS [Estremo inferiore], 3*[?s] AS 3?s, Misurazioni.ditta, Misurazioni.anno, Misurazioni.oggetto, Misurazioni.documento
FROM Misurazioni
GROUP BY Misurazioni.ditta, Misurazioni.anno, Misurazioni.oggetto, Misurazioni.documento
HAVING (((Misurazioni.ditta)=[Maschere]![Visualizza dati]![CboDitta]) AND ((Misurazioni.anno)=[Maschere]![Visualizza dati]![CboAnno]) AND ((Misurazioni.oggetto)=[Maschere]![Visualizza dati]![CboOggetto]) AND ((Misurazioni.documento)=[Maschere]![Visualizza dati]![CboDocumento])) OR (((Misurazioni.anno)=[Maschere]![Visualizza dati]![CboAnno]) AND ((Misurazioni.oggetto)=[Maschere]![Visualizza dati]![CboOggetto]) AND ((Misurazioni.documento)=[Maschere]![Visualizza dati]![CboDocumento]) AND (([Maschere]![Visualizza dati]![cboDitta]) Is Null)) OR (((Misurazioni.ditta)=[Maschere]![Visualizza dati]![CboDitta]) AND ((Misurazioni.oggetto)=[Maschere]![Visualizza dati]![CboOggetto]) AND ((Misurazioni.documento)=[Maschere]![Visualizza dati]![CboDocumento]) AND (([Maschere]![Visualizza dati]![CboAnno]) Is Null)) OR (((Misurazioni.ditta)=[Maschere]![Visualizza dati]![CboDitta]) AND ((Misurazioni.anno)=[Maschere]![Visualizza dati]![CboAnno]) AND ((Misurazioni.documento)=[Maschere]![Visualizza dati]![CboDocumento]) AND (([Maschere]![Visualizza dati]![CboOggetto]) Is Null)) OR (((Misurazioni.ditta)=[Maschere]![Visualizza dati]![CboDitta]) AND ((Misurazioni.anno)=[Maschere]![Visualizza dati]![CboAnno]) AND ((Misurazioni.oggetto)=[Maschere]![Visualizza dati]![CboOggetto]) AND (([Maschere]![Visualizza dati]![CboDocumento]) Is Null)) OR ((([Maschere]![Visualizza dati]![cboDitta]) Is Null) AND (([Maschere]![Visualizza dati]![CboAnno]) Is Null) AND (([Maschere]![Visualizza dati]![CboOggetto]) Is Null) AND (([Maschere]![Visualizza dati]![CboDocumento]) Is Null));
Quest'ultimo codice dà il problema.
In ogni caso al seguente link trovate questo database
Link al mio precedente thread:
https://www.iprogrammatori.it/forum-programmazione/access/report-che-filtra-valori-vedere-t33413.html
Grazie mille per l'ascolto
Jibi