Newsgroup: it.comp.appl.access
Titolo: Query a Campi Incrociati

Ciao,
ho Access 97 e ho un problema.
Ho fatto una query a campi incrociati che fa base ad altre query.
Se sulle query a monte ci sono dei filtri che fanno riferimento a valori
presenti su maschere, la query a campi incrociati non si esegue in quanto
non riconosce i valori.
Se questi valori sono inseriti direttamente nei criteri delle query allora
tutto č ok.
Sapete dirmi perchč? E' un bug di Access? con Access 2000 pare non ci siano
problemi.
Se ci sono soluzioni per Access 97 vi prego di farmi sapere perchč ho gią
mal di testa di prima mattina.
Grazie Mille

 Grazie Mille
Non so se quello che sto per dirti vale o meno per Access 2000, ma
certamente vale per Access 97.
Quello che ti succede non è dovuto ad un bug di Access ma è dovuto al non
rispetto di una regola da parte tua.
In tutte le query parametriche sarebbe bene esplicitare il tipo dati di ogni
singolo parametro, ma poichè per la stragrande maggioranza delle queries la
cosa è opzionale, di solito non li esplicitiamo, lasciando che se la cavi
Access per conto suo.
C'è un però: se la query parametrica è una query a campi incrociati o è una
query su cui è basata una query a campi incrociati (il tuo caso) è
OBBLIGATORIO esplicitare il tipo dati di ogni parametro e se non lo si fa la
query a campi incrociati, come hai potuto constatare personalmente, non
funziona.
Per esplicitare il tipo dati dei parametri di una query con il codice SQL
usa prima della SELECT o della TRANSFORM la proposizione PARAMETERS (vedi
help).
Se la query con parametri la stai costruendo con la griglia di struttura,
una volta che hai appunto aperto la griglia di struttura della query che
contiene i parametri, dal menu Query seleziona il comando Parametri... con
il quale si apre la finestra di dialogo Parametri query nella quale DEVI
impostare il tipo dati di tutti i parametri usati nella query.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

...
Hai complettamente ragione, Roberto. Ho solo da aggiungere
che la causa per questo comportamento è spiegato in breve a
"Can't Bind Name '[XXX]'" Error Message with Crosstab Query
http://support.microsoft.com/default.aspx?scid=kb;en-us;91710
o per JET4
ACC2000: Error When Running Crosstab Query with a Parameter
http://support.microsoft.com/default.aspx?scid=kb;en-us;209778
e se qualcuno s'interessa per i dettagli:
Una query a campi incrociati crea i nomi delle colonne dinamicamente.
Per questo al contrario di una query "normale" Access prima non vede
se si tratta di un campo di una tabella o di un parametro e non reagisce
con una finestra di parametro o (tramite il suo Expression Service)
con la valorizzazione di una funzione o di un riferimento a un controllo.
Poi come sempre il Parser/Binder della JET Query Engine prova
ad associare le colonne ai campi delle tabelle indicate nella
clausola FROM. Certo per un parametro non è possibile e in
questo momento (= troppo tardo) esce l'errore.
Se invece il parametro è definito esplicitamente nello statement SQL
tutto è conosciuto dall'inizio di questi processi e trattato adeguato
da Access e dopo dalle stazioni diverse della Query Engine.
Fine della predica nella quale sicuramente ho deformato la
grammatica italiana un'altra volta. ;-)
-- 
cu
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com