Newsgroup: it.comp.appl.access
Titolo: Criterio data su Query

Salve dovrei creare una query che estrapoli l'ultimo record inserito a 
parità di codice
mi spiego
se ho i seguenti record:
01 - pippo -  01/01/2005
01 - verdi  -  23/08/2005
01 - blu - 24/08/2005
02 - giallo - 22/08/2005
02 - arancio - 27/08/2005
03 - marrone - 22/07/2004
la query dovrebbe restituire
01 - blu - 24/08/2005   ( perché tra quelli con codice 01 è il più recente)
02 - arancio - 27/08/2005  ( perché tra quelli con codice 02 è il più 
recente)
03 - marrone - 22/07/2004 ( perché tra quelli con codice 03 è il più 
recente)
da notare che la data viene passata alla query tramite casella a discesa ed 
il criterio utilizzato nel campo data è il seguente
<=[Forms]![Mask_Stampe2]![CasellaData1] And DMax("[Data primo 
agg]";"Tab_DatiGenerali";"CodiceNIF = '" & [CodiceNIF] & "'")
in sostanza il criterio impone di prendere tra i record con data minore 
quelli con data maggiore
in pratica in questo modo vado a beccare i record più recenti.
Il criterio funziona ma solo se non ci sono record con codici duplicati... 
in caso contrario non viene restituito nulla!

 ha scritto nel messaggio
news:QgWPe.86067$2U1.4...@news3.tin.it...

Ammesso e non concesso che io abbia capito cosa tu voglia fare, se il campo
CodiceNIF come sembra è di tipo Testo, visto che la funzione DMax ti
restituisce una variabile Stringa è necessario convertirla in una di tipo
Data/ora: prova a scrivere i criteri così:
<=[Forms]![Mask_Stampe2]![CasellaData1] And CDate(DMax("[Data primo agg]";
"Tab_DatiGenerali"; "CodiceNIF = '" & [CodiceNIF] & "'"))
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel 
messaggio news:R_WPe.33073$F23.3...@twister2.libero.it...

ho provato ad impostare la conversione suggerita  pare che adesso funzioni a 
dovere

 ha scritto nel messaggio 
news:cbZPe.86742$2U1.4...@news3.tin.it...

Devo riamgiarmi quello che ho detto nel post precedente
continuando a provare ho riscontrato purtroppo un errore
in sostanza adesso la query funziona ma rispetto alla data odierna.. mi 
spiego
avendo:
01 - pippo -  01/01/2005
01 - verdi  -  23/08/2005
01 - blu - 24/08/2005
02 - giallo - 22/08/2005
02 - arancio - 27/08/2005
03 - marrone - 22/07/2004
effetuando la query con data odierna mi viene correttamente restituito:
01 - blu - 24/08/2005
02 - arancio - 27/08/2005
03 - marrone - 22/07/2004
se invece faccio la ricerca con data 25/08/2005
ottengo
03 - marrone - 22/07/2004
mentre la query dovrebbe restituire
01 - blu - 24/08/2005
03 - marrone - 22/07/2004
e come se escludesse i record con dato codice che hanno data minore della 
data massima

 ha scritto nel messaggio
news:4xZPe.86811$2U1.4...@news3.tin.it...

Come avevo ipotizzato non avevo ben compreso ciò che ti serviva e mi ero
limitato a rimuovere dai criteri l'errore di tipo formale, ma avevo lasciato
quello di tipo logico.
Con il valore della casella cambinata CasellaData1 devi condizionare la
funzione DMax e non filtrare la query, in quanto devi determinare la data
massima tra quelle inferiori o uguali alla data selezionata nella casella
combinata.
Però mi resta il dubbio di non avere ancora capito bene, in quanto a mio
avviso selezionando nella casella combinata la data 25/8/2005 la query
dovrebbe visualizzare i seguenti record:
01 - blu - 24/08/2005
02 - giallo - 22/08/2005
03 - marrone - 22/07/2004
Visto che anche il 22/8/2005 è inferiore a 25/8/2005.
Se così è, modifica i criteri della query nel seguente modo:
CDate(DMax("[Data primo agg]"; "Tab_DatiGenerali"; "CodiceNIF = '" &
[CodiceNIF] & "'  AND [Data primo agg] <= #" &
Format([Forms]![Mask_Stampe2]![CasellaData1]; "mm/gg/aaaa") & "#"))


 ha scritto nel 
messaggio news:1kfQe.34217$HM1.9...@twister1.libero.it...

Dalle prime prove che ho fatto pare che funziona... vedremo man mano che 
sarano inseriti dati
ho notato una cosa .. se l'utente inavertitmente inserisce nella casella una 
data non valida Access
segnala un errore e non consente poi ..anche inserendo una data corretta di 
lanciare la query..
l'erorore segnalato dice: " Espressione troppo complessa per ..... "
in pratic occorre chiudere il db e riaprirlo affinche tutto torni alla 
normalità

 normalità
Non so assolutamente in che contesto apri la query, resta il fatto che sta a
chi programma verificare la congruità dri dati immessi dall'utente prima che
questi vengano usati come parametri della query e richiedere all'utente di
correggerli, in caso contrario non mandare avanti l'elaborazione: non farlo
è una mancanza del programmatore.
