Newsgroup: it.comp.appl.access
Titolo: Problemi con funzione Dmax in query!

ciao,
qualcuno sa spiegarmi perchè non mi funziona questa query?
SELECT T_principale.id, T_principale.cognome, T_principale.nome,
T_Rinnovi.id_tab, T_Rinnovi.id_utente, T_Rinnovi.rinnovo,
T_Rinnovi.data_iniizo, T_Rinnovi.data_fine, T_Rinnovi.nome_centro,
Month([data_fine]) AS mese, Year([data_fine]) AS anno
FROM T_principale LEFT JOIN T_Rinnovi ON T_principale.id =
T_Rinnovi.id_utente
WHERE (((T_Rinnovi.data_fine)<DMax
([data_fine],"T_Rinnovi","id_utente=" & [T_Principale].[id])) AND
((Month([data_fine]))=[inserire mese]) AND ((Year([data_fine]))=
[inserire anno]));
Devo estrarre i nominativi con i relativi dati solo se la data_fine
inserita come parametro sotto forma di mese e anno è < DMax
([data_fine],"T_Rinnovi", di quell'id utente)
Dove sbaglio??


nessuno ha qualche idea in merito?
Attendo in aiuto
mille grazie

 - Mostra testo citato -
1)Non mi funziona cosa significa? Da errore? che tipo di errore?Oppure
trova dei risultati non voluti? Oppure?
F.

 - Mostra testo citato -
Mi restituisce un risultato non voluto!!
In sostanza non mi restituisce il massimo valore del campo data_fine
di ciascun id_utente ma semplicemente il valore che c'è nel campo
data_utente qualunque esso sia!!
Non capisco come uscirne.

 - Mostra testo citato -
Sono meno lucido del solito (il che è tutto dire)
Io da niubbo comincerei così:
Metti quella Dmax come espressione della query (invece che nei
criteri). Che risultato ti dà la colonna Dmax? quello voluto ?
Se si Allora metti ">T_Rinnovi.data_fine" nel suo criterio
Se no allora ho dimostrato di non aver capito nulla, per cui gradirei
un esempio :-)
F.

 un esempio :-)
Non preoccuparti,sono qui per trovare una soluzione,e apprezzo il tuo
aiuto!!
Non riesco ad uscirne..


Sempre se ho capito, ma dall'SQL che hai postato non sembra...
Ho provato a ricreare un esempio analogo al tuo e questo è SQL
corrispondente e funzionante...
SELECT T_Anagrafica.IdAnagrafica, T_Anagrafica.DITTA,
T_Promemoria.Id_Promemoria, T_Promemoria.Id_Anagrafica_Promemoria,
T_Promemoria.DataPromemoria, DMax
("[DataPromemoria]","T_Promemoria","Id_anagrafica_Promemoria=" &
[IdAnagrafica]) AS Espr1, T_Anagrafica.DataUltimoAggiornamento
FROM T_Anagrafica INNER JOIN T_Promemoria ON T_Anagrafica.IdAnagrafica
= T_Promemoria.Id_Anagrafica_Promemoria
WHERE (((DMax
("[DataPromemoria]","T_Promemoria","Id_anagrafica_Promemoria=" &
[IdAnagrafica]))>[DataUltimoAggiornamento]));
Come vedi la DMax è nella SELECT e non nel WHERE...
Sperando di essere stato utile
F.

 F.
Questa è la soluzione riadattata al mio caso,funzione ed è
perfetta,grazie al tuo aiuto!!
SELECT T_principale.id, T_principale.cognome, T_principale.nome,
T_Rinnovi.id_tab, T_Rinnovi.id_utente, T_Rinnovi.rinnovo,
T_Rinnovi.data_iniizo, T_Rinnovi.data_fine, T_Rinnovi.nome_centro,
Month([data_fine]) AS mese, Year([data_fine]) AS anno
FROM T_principale INNER JOIN T_Rinnovi ON T_principale.id =
T_Rinnovi.id_utente
WHERE (((T_Rinnovi.data_fine)=DMax
("[data_fine]","T_Rinnovi","id_utente= " & [id])) AND ((Month
([data_fine]))=[inserire mese]) AND ((Year([data_fine]))=[inserire
anno]));
Forse sbagliavo qualcosa nella sintassi della Dmax comunque era questo
quello che mi serviva.
Grazie ancora mi sei stato di grande aiuto!!
Saluti
F.