Newsgroup: it.comp.appl.access
Titolo: Condizione WHERE in query basata su controlli di form non "sente" i valori dei controlli

Ho una form del tipo "maschere continue" che ha come origine record una query in cui è specificata una condizione WHERE
basata su alcuni controlli della form medesima.
La query è la seguente:
SELECT Fatture.*, Compagnie.Rag_Sociale, Compagnie.Rag_Supplementare, Soggetti.Cognome, Soggetti.Nome, Incassi.N_Prot,
Incassi.DT_Pagamento, Incassi.Importo_E
FROM ((Fatture LEFT JOIN Compagnie ON Fatture.CD_Compagnia = Compagnie.ID_Record) LEFT JOIN Soggetti ON
Fatture.CD_Soggetto = Soggetti.ID_Record) LEFT JOIN Incassi ON Fatture.CD_Incasso = Incassi.ID_Record
WHERE (((Fatture.CD_Compagnia)=[Forms]![Fatture (riepilogo)]![cboRicercaCompagnia]) AND ((Fatture.DT_Fatt) Between
Nz([Forms]![Fatture (riepilogo)]![txtDT_FatIni],#1/1/1900#) And Nz([Forms]![Fatture
(riepilogo)]![txtDT_FatFin],#12/31/2100#))) OR (((Fatture.DT_Fatt) Between Nz([Forms]![Fatture
(riepilogo)]![txtDT_FatIni],#1/1/1900#) And Nz([Forms]![Fatture (riepilogo)]![txtDT_FatFin],#12/31/2100#)) AND
(([Forms]![Fatture (riepilogo)]![cboRicercaCompagnia]) Is Null))
Nella routine associata all'evento AfterUpdate di ciascuno dei controlli cboRicercaCompagnia, txtDT_FatIni, txtDT_FatFin
c'è l'unica istruzione Me.Requery.
Quando la form viene aperta i tre controlli contengono NULL e quindi vengono visualizzati tutti i record restituiti
dalla query.
Però se digito un valore in uno qualsiasi dei tre controlli (o anche in una qualunque loro combinazione), la query
continua a restituire tutti i record, come se non avessi digitato niente.
Con il debug ho verificato che prima di eseguire la requery i controlli contengano efettivamente i valori che ho
digitato.
Allora ho alterato la query definendo tre colonne (con l'autocomposizione, in modo da evitare errori di digitazione !),
ognuna dedicata a restituire i valori dei controlli utilizzati per la condizione WHERE.
E qui si verifica la cosa strana:
le colonne della query, eseguita mentre il debug è fermo in attesa di eseguire la requery e dopo avere verificato che i
controlli contengano il valore che ho digitato, restituiscono sempre NULL !
Ho provato a inserire Me.Refresh prima di Me.Requery senza alcun effetto.
Inutile dire che la stessa applicazione contiene un'altra form che funziona senza problemi, costruita esattamente nello
stesso modo (addirittura con gli stessi controlli), con origine record una query assolutamente equivalente anche se
basata su tabelle diverse.
TIA
Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400
http://www.faq400.com/
---------------------------------------------

 ---------------------------------------------
-- 
-- 
Massimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

se nel primo caso, hai provato a passare i valori con Eval?
No.
Intendi che dovrei scrivere
WHERE Fatture.CD_Compagnia=Eval([Forms]![Fatture
 (riepilogo)]![cboRicercaCompagnia]) .... ?
E perchè mai ? Non è mai servito ...
Comunque proverò oggi pomeriggio.


Eval("Forms!... ")
guarda sul sito di Karl
