Newsgroup: it.comp.appl.access
Titolo: Query per valorizzare campo su maschera

Buon giorno e buon anno.
Ho, come ogni tanto, un problema che non riesco a risolvere e cioč ho una 
query che č la seguente:
SELECT T_Movimenti.IDCliente, T_Movimenti.DataIns, 
T_DettagliMov.ImportoSPED, T_DettagliMov.Versamento, T_DettagliMov.SaAdd
FROM T_Movimenti INNER JOIN T_DettagliMov ON T_Movimenti.IDMovimento = 
T_DettagliMov.IDMovimenti
GROUP BY T_Movimenti.IDCliente, T_Movimenti.DataIns, 
T_DettagliMov.ImportoSPED, T_DettagliMov.Versamento, T_DettagliMov.SaAdd
HAVING (((T_Movimenti.IDCliente)=[Forms]![M_VisMovAAA]![cmbScelClie]) AND 
((T_Movimenti.DataIns)<[Forms]![M_VisMovAAA]![txtDataIni]));
questa query da un valore ad un campo della maschera  M_VisMovAAA, che 
sostanzialmente rappresenta il saldo contabile prima della data impostata da 
[M_VisMovAAA]![txtDataIni].
Ora il problema č questo, non riesco a capire perchč se io immetto in 
[M_VisMovAAA]![txtDataIni] una data ad esempio 01/02/2005, dove sicuramente 
non ho movimenti successivi, la query mi da un valore Null, mentre il valore 
che mi aspetterei č il saldo di tutti gli importi prima del 01/02/2005.
Sicuramente sbaglio qualcosa, il problema č che non so cosa.
Spero di essere stato chiaro e se mi date una mano ve ne sarei grato.
Saluti
G&W 


Metti le condizioni in having nella where.
Cmq, il risultato che avrai non credo sia quello che vuoi.
A seguire c'e' una considerazione piu' "sanguigna"
-----
a me risulta che la "having" venga applicata al risultato della group 
by.  I controlli che fai in having mi sembra piu' appropriato metterli 
nella WHERE.
Al di la' delle tue spiegazioni della query a me sembra che c'e' 
qualcosa di strano nella tua group by, oserei dire di "illogico".
A quanto mi par di capire tu vuoi che i valori vengano raggruppati per:
IDCliente : e questo mi sta bene
DataIns: e questo "potrebbe" starmi bene
ImportoSPED: e questo comincia a darmi dei dubbi. Intendi che vuoi 
raggruppare tutti gli importi di 1000 Euri per un certo cliente per una 
certa data per un certo versamento per un certo saadd?
Versamento: non ho ben capito cosa sia ma vale quanto per ImportoSPED
saAdd: come sopra.
 > questa query da un valore ad un campo della maschera  M_VisMovAAA, che
 > sostanzialmente rappresenta il saldo contabile prima della data 
impostata da
 > [M_VisMovAAA]![txtDataIni].
questo e' quello che vorresti fare non quello che fa. Come vedi certe 
volte le spiegazioni possono essere, come dire, superflue?
Forse sarebbe meglio che spiegassi quello che vuoi non quello che fai, 
quest'ultima cosa e' "leggibile" dalla query
forse io farei cosi'
SELECT top 1 saadd, dataIns
FROM T_Movimenti INNER JOIN T_DettagliMov ON T_Movimenti.IDMovimento =
  T_DettagliMov.IDMovimenti
WHERE T_Movimenti.IDCliente)=[Forms]![M_VisMovAAA]![cmbScelClie]) AND
  T_Movimenti.DataIns)<[Forms]![M_VisMovAAA]![txtDataIni]
ORDER by 2 desc
immagino che saadd sia il saldo.
--
a.cara

> Sicuramente sbaglio qualcosa, il problema è che non so cosa.

Ti ringrazio dell'attenzione
Quello che desidero che la query mi ritorni, è il la somma dei tre campi, 
qualora ci fossero dei movimenti prima della data inserita in  txtDataIni. 
Ora questo avviene normalmente quando dopo  la txtDataIni ci sono movimenti, 
ma non mi da risultati quando dopo la txtDataIni non ci sono movimenti 
mentre a me occorre avere la somma dei tre campi prima di txtDataIni anche 
se dopo non ci sono movimenti.
La query viene eseguita normalmente ma la maschera che dovrebbe visualizzare 
il risultato non me lo visualizza perchè dopo txtDataIni non ci sono 
movimenti.
Spero di essere stato abbastanza chiaro, comunque ti ringrazio per il tuo 
tempo
Ciao
G&W