Newsgroup: it.comp.appl.access
Titolo: Query a campi incrociati che non legge parametri da maschera

Ho un problema con una query a campi incrociati: tale query deriva la sua
origine dati da un'altra query nella quale ho fissato alcuni parametri.
Questi parametri sono valorizzati dall'utente in fase d'immissione e ho
fissato in QBE anche l'eventualità che l'utente non inserisc alcun
parametro(valori null). Il problema viene quando lancio la query a campi
incrociati: se la lancio senza aprire la maschera d'immissione dei criteri
tutto funziona perfettamente anche se non metto parametri (vengono cioe'
visualizzati tutti i record); nel caso in cui io usi la maschera
d'immissione la query a campi incrociati non funziona mentre x esempio
funziona la query su cui quella incrociata si basa
Ho controllato mille volte che i nome di maschera d'immissione nei campi
parametro fossero corretti.............ho specificati i tipi di parametri in
visulizzazione struttura parametri query ma nulla di nulla!!!
Help
Grazie a tutti x l'attenzione e spero di essere stato chiaro con questo mio
post ............ ciao a tutti
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:151Z96Z0Z8Y10...@usenet.libero.it...

Se una query a campi incrociati è parametrica o è basata su una query
parametrica (caso tuo), è OBBLIGATORIO esplicitare il tipo dati di ogni
parametro (sarebbe bene farlo sempre, ma in questo caso è indispensabile).
Nel tuo caso l'intervento va fatto sulla query (che ipotizziamo si chiami
Query1) su cui è basata la query a campi incrociati.
Se il parametro di Query1 è ad esempio
[Forms]![NomeMaschera]![NomeControllo].
Se [Forms]![NomeMaschera]![NomeControllo] contiene un valore di tipo Testo.
Apri la griglia di struttura di Query1; dal menu Query seleziona
Parametri...; nella finestra di dialogo Parametri query che si è aperta,
nella colonna Parametro digita Forms!NomeMaschera!NomeControllo e nella
colonna Tipo dati seleziona Testo.
Naturalmente se i parametri sono più di uno, riempirai altrettante righe
della finestra di dialogo Parametri query.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Innanzitutto grazie x l'aiuto offertomi.
Ho seguito il tuo consiglio ma mi accade una cosa strana:quando apro la
maschera d'immissione dei criteri questi ultimi devono essere valorizzati
necessariamente....cioč non mi accetta valori null.....mentre io nella query
li ho messi nei criteri tant'č vero che se lancio la query senza maschera
questa funziona con parametri null
Ho controllato + volte l'esatto riferimento dei controlli ed il tipo nella
QBE/parametri query e quindi non capisco perche' la mia query non funzioni
se la eseguo immettendo i parametri da maschera.


 se la eseguo immettendo i parametri da maschera.
Prova apostare il codice SQL della query di selezione.
Le caselle di testo in cui digiti i parametri di selezione sono non
associate?


 associate?
Il codice io lo mando ma spero tu non abbia voglia di ammazzarmi.....ehheehe
PARAMETERS [Forms]![definitivamFiltroDatiFatture]![cmbFornitori] Text,
[Forms]![definitivamFiltroDatiFatture]![cmbMese] Text,
[Forms]![definitivamFiltroDatiFatture]![cmbAnno] Text;
SELECT tAnagrafica.nominativo, tImportiFattura.Periodo,
tImportiFattura.importo AS Importo, tDatiFatture.Descrizione, tValuta.cambio
AS Cambio, [importo]/[cambio] AS [Importo In €], tValuta.id_valuta,
Format([Periodo],"mmmm") AS Espr1, Format([Periodo],"yyyy") AS Espr2
FROM tValuta INNER JOIN ((tAnagrafica INNER JOIN tDatiFatture ON
tAnagrafica.id_anagrafica = tDatiFatture.cod_anagrafica) INNER JOIN
tImportiFattura ON tDatiFatture.id_DettagliSpesa =
tImportiFattura.cod_DettagliSpese) ON tValuta.id_valuta =
tImportiFattura.cod_valuta
WHERE
(((tAnagrafica.nominativo)=[Forms]![definitivamFiltroDatiFatture]![cmbFornitori])
AND
((Format([Periodo],"mmmm"))=[Forms]![definitivamFiltroDatiFatture]![cmbMese])
AND
((Format([Periodo],"yyyy"))=[Forms]![definitivamFiltroDatiFatture]![cmbAnno]))
OR
(((Format([Periodo],"mmmm"))=[Forms]![definitivamFiltroDatiFatture]![cmbMese])
AND
((Format([Periodo],"yyyy"))=[Forms]![definitivamFiltroDatiFatture]![cmbAnno])
AND (([Forms]![definitivamFiltroDatiFatture]![cmbFornitori]) Is Null)) OR
(((tAnagrafica.nominativo)=[Forms]![definitivamFiltroDatiFatture]![cmbFornitori])
AND
((Format([Periodo],"yyyy"))=[Forms]![definitivamFiltroDatiFatture]![cmbAnno])
AND (([Forms]![definitivamFiltroDatiFatture]![cmbMese]) Is Null)) OR
(((Format([Periodo],"yyyy"))=[Forms]![definitivamFiltroDatiFatture]![cmbAnno])
AND (([Forms]![definitivamFiltroDatiFatture]![cmbFornitori]) Is Null) AND
(([Forms]![definitivamFiltroDatiFatture]![cmbMese]) Is Null)) OR
(((tAnagrafica.nominativo)=[Forms]![definitivamFiltroDatiFatture]![cmbFornitori])
AND
((Format([Periodo],"mmmm"))=[Forms]![definitivamFiltroDatiFatture]![cmbMese])
AND (([Forms]![definitivamFiltroDatiFatture]![cmbAnno]) Is Null)) OR
(((Format([Periodo],"mmmm"))=[Forms]![definitivamFiltroDatiFatture]![cmbMese])
AND (([Forms]![definitivamFiltroDatiFatture]![cmbFornitori]) Is Null) AND
(([Forms]![definitivamFiltroDatiFatture]![cmbAnno]) Is Null)) OR
(((tAnagrafica.nominativo)=[Forms]![definitivamFiltroDatiFatture]![cmbFornitori])
AND (([Forms]![definitivamFiltroDatiFatture]![cmbMese]) Is Null) AND
(([Forms]![definitivamFiltroDatiFatture]![cmbAnno]) Is Null)) OR
((([Forms]![definitivamFiltroDatiFatture]![cmbFornitori]) Is Null) AND
(([Forms]![definitivamFiltroDatiFatture]![cmbMese]) Is Null) AND
(([Forms]![definitivamFiltroDatiFatture]![cmbAnno]) Is Null))
ORDER BY tImportiFattura.Periodo;


 [Forms]![definitivamFiltroDatiFatture]![cmbAnno] Text;
[CUT]
Il fatto che digitando i parametri in una finestra di dialogo (ad esempio
quando la maschera è chiusa) tutto funzioni, mi fa insistere sul fatto che
siano non corretti i tipi dato dei parametri, mentre mi fa pensare che la
query non sia errata (confesso comunque di non averla sviscerata).
Non è per caso che cmbFornitori è una combo a due colonne, di cui la prima è
non visibile e contiene IDFornitore numerico, mentre la seconda (visibile)
contiene il nominativo del fornitore; se così fosse e come collonna
associata fosse indicata la prima (normale valore di default),
[Forms]![definitivamFiltroDatiFatture]![cmbFornitori]  avrebbe un tipo dato
Long: comunque la cosa non funzionerebbe, in quanto filtreresti il campo
tAnagrafica.nominativo, che penso sia di tipo TESTO, con
[Forms]![definitivamFiltroDatiFatture]![cmbFornitori] che sarebbe un dato
NUMERICO, anche se poi nei parametri lo hai indicato di tipo Text.
Stessa riserva ce la ho per cmbAnno; sei sicuro che la lista della combo sia
composta da stringhe e non da valori numerici (insomma "2002" e non 2002)?
Insomma analizzare le proprietà e le origini riga delle due combo potrebbe
risolvere l'arcano.


Ciao Roberto e grazie x l'interesse dimostrato al mio problema! I controlli
della mia maschera dai quali valorizzo i parametri sono tre combobox in
effetti ma queste combo traggono i loro valori da un elenco da me
specificato e non da tabelle preesistenti multicolonna. Inoltre mi accede
una cosa strana: la query non mi funzione all'apertura maschera se io non
valorizzo solo uno dei parametri, ma se io li valorizzo tutti la query
funziona. In pratica è come se la mia maschera non gestisse i valori
null..valori che sono invece gestiti se io lancio la query senza aprire la
maschera.......non sò + che pesci prendere!!!!!!


Scusate se riposto il mio problema ma non sò dove trovare una soluzione!!!
Il problema è questo: ho una query a campi incrociati la quale si basa su
una query che trae i valori dei suoi parametri da una maschera! Imposto
nella query di selezione i tipi di parametri con i giusti percorsi(i
parametri sono di tipo testo).
Il problema che si presenta è questo: io tento di lanciare la query a campi
incrociati immettendo i valori nella maschera ma essa non gestisce i valori
NULL...................se immetto valori diversi da null la query funziona
.Inoltre se lancio la query non dalla maschera essa funziona quindi presumo
sia giusta.
Per quanto riguarda i parametri della maschera questi vengono immessi con 3
combobox che prendono i loro valori da un elenco da me immesso..un elenco di
valori di testo.
NON sò + che pesci pigliare.help.help!!!!!


 ha scritto nel messaggio
news:151Z96Z0Z8Y10...@usenet.libero.it...

Capisco che per le combo cmbMese e cmbAnno hai scelto come origine riga un
elenco da te digitato a manina santa, ma il fatto che lo hai fatto anche per
la cmbFornitori mi lascia alquanto perplesso; comunque, tutti i gusti son
gusti. ;-)
Se come clausola WHERE usassi uno script del genere cosa succede?
WHERE (((tAnagrafica.nominativo) Like
Nz([Forms]![definitivamFiltroDatiFatture]![cmbFornitori],"*")) AND
((Format([Perido],"mmmm")) Like
Nz([Forms]![definitivamFiltroDatiFatture]![cmbMese],"*")) AND
((Format([Perido],"yyyy")) Like
Nz([Forms]![definitivamFiltroDatiFatture]![cmbAnno],"*")));


 gusti. ;-)
 In effetti ho sbagliato a scrivere ehehehe
La comboboxFornitori ha come origine riga una query sulla tabella fornitori


Ho provato ad inserire come clausola WHERE lo script da te propostomi ma il
risultato è il medesimo: nella maschera definitivamFiltroDatiFatture devo
valorizzare tutti i campi altrimenti...............i null..........non
vengono gestiti una volta che lancio la query!!!!!
Non mi resta che far inserire i parametri a mano dall'utente tramite la
classica ( a mio parere pessima) finestra di dialogo
P:S: Il tuo aiuto è ed è stato comunque prezioso............grazie!!!



Beh, allora bisognerebbe dare una guardatina al numero delle colonne della
combo, alla colonna associata della combo ed al codice SQL della query che è
origine riga della combo. ;-)
