Newsgroup: it.comp.appl.access
Titolo: Query per richiamare record in base a data

Ciao a tutti.
Ho un problema con la gestione dei dati in base a date (scusate il gioco di 
parole).
Ho creato una maschera dove, automaticamente, mi inserisce in una casella di 
testo l'anno attuale in 4 cifre, in un'altra il mese attuale in lettere e in 
un'altra il giorno del mese in cifre. le tre caselle sono non modificabili 
dall'operatore. Nella tabella corrispondente, ogni valore è registrato in un 
campo Data.
poi ci sono altri campi accessori.
lo scopo sarebbe quello, alla fine, di stampare un report su base mensile + 
annuale (cioè gennaio 2007, marzo 2008, etc), dove raggruppare e 
visualizzare tutti i dati registrati relativi a quel mese / anno.
Allora, dopo aver creato un report ad hoc, ho creato una query per cercare 
di raggruppare i dati, ma niente da fare........
Ho provato due query:
1° query: mi visualizza in una cbx il mese / anno così mi seleziono il 
mese/anno che mi interessa e poi la 2° query mi apre il report con i dati 
raggruppati
SELECT [ProgressivoMOT9], [Anno] & " " & [Mese] AS Periodo
FROM tblMOT9
ORDER BY [Anno], [Mese];
2° query
SELECT tblMOT9.*
FROM tblMOT9
WHERE ((([tblMOT9].[Mese]) Like Nz([Forms]![frmMOT9]![cbxMeseMOT9],"*")));
La cbx basata sulla 1° query, però, mi visualizza tutti i record 
(attualmente sono pochi sia perchè lo sto provando, sia perchè il mese è uno 
solo, per ora) facendomi vedere la data in formato numerico (dd/mm/aaaa) e 
io invece mi aspetterei di trovare il formato aaaa mmmmmm
Poi, è questo in verità non lo so fare, gradire vedere solo UN mese/anno 
(cioè solo 2007 Dicembre) e non XX/12/2007 ripetuto tante volte quanti i 
record inseriti a dicembre.
Poi vorrei sapere per quale motivo mi visualizza la data in formato 
dd/mm/aaaa quando nella tabella viene memorizzato il mese in lettere.
In definitiva, non va.......
Suggerimenti per ottenere il risultato?
Grazie
Andrea 


Se il problema è il report raggruppato per anno/mese, non c'è bisogno di 
raggruppare i dati nella query, lo fa direttamente il report indicando i 
campi da raggruppare in: Visualizza - Ordinamento Raggruppamento e attivando 
la visualizzazione dell'intestazione e piè di pagina per ogni gruppo 
definito...
Ciao.
-- 
Sergio MAZZA 


Grazie per il suggerimento. Ho fatto come mi hai indicato.
Ho provato mettendo indietro la data di sistema (ho fatto due inserimenti in 
ottobre), poi l'ho sistemata e fatto due inserimenti in dicembre.
In effetti, mi riporta i valori in due sezioni separate (anche se devo 
ancora capire come fargli indicare il mese e l'anno cui si riferisce il 
raggruppamento), ma non è esattamente ciò di cui ho bisogno.
Ogni mese (o su richiesta), io dovrei stampare la pagina/e relativa ai 
movimenti effettuati nel mese (o alla data della richiesta), quindi avrei 
necessità di raggruppare solo i dati di quel mese; nell'intestazione mi 
riporterebbe anno, mese e alcuni altri dati aggiuntivi.
Usando la funzione di raggruppamento che mi suggerisci, mi stamperebbe 
sempre tutto il report dal primo record inserito fino all'ultimo, tutti di 
seguito.
Andrea 

 Andrea
Nella origine dati del report (la query) devi inserire due campi calcolati 
"Anno" e "Mese":
(es.)
Anno: Year(dataMovimento)
Mese: Month(dataMovimento)
Nel report fai il raggruppamento per questi due campi calcolati...
Ciao.
-- 
Sergio MAZZA 


Sono un paio di giorni che ci provo, ma la mia scienza è molto limitata.
Stavo pensando una alternativa, forse (spero) più semplice concettualmente.
Eliminati i campi data automatici iniziali, ho creato due campi di tipo data 
(DataCarico e DataScarico).
Per inciso, fondamentalmente questo db mi dovrebbe gestrire il 
carico/scarico di materiale, per cui ho, nella maschera, due parti identiche 
nei contenuti, ma una solo per il carico e una solo per lo scarico (cioè, i 
campi da compilare sono gli stessi in duplice copia, ma in alcuni controlli 
esegue dei calcoli di somma/differenza a seconda si tratti di carico o 
scarico). Nella tabella di riferimento ci sono tutti questi campi "in 
doppio". All'inizio di ognuna di queste due "sezioni" di inserimento ho 
collocato la casella "Data" (che sarà " di Carico" o " di Scarico")
Nella sezione di stampa report, ho creato due controlli di testo non 
associati (txtDataCarico e txtDataScarico), con maschera di inserimento 
00/00/0000 in cui inserire data di inizio e di fine mese.
Come faccio a dire alla query di selezionare tutti i records in cui i campi 
DataCarico e DataScarico sono compreso tra i due valori (compresi) inseriti 
in quei due controlli non associati, e di ordinarli cronologicamente?
Grazie
Andrea 

 Andrea
Secondo me è da rivedere un po' tutta l'analisi.
Se vuoi gestire i movimenti carico/scarico con una sola tabella, è inutile 
che crei due campi di contenuto logico (data del movimento) identico e poi 
non sai identificare il record (se carico/scarico) in modo preciso.
Io farei così:
[Movimenti]
- id, contatore, indicizzato (duplicati non ammessi)
- dataMovimento, data
- tipoMovimento, testo 1 carattere, (Se "C" = carico o "S" = scarico)
- altri dati...
A questo punto ottenere le differenze in base al tipo di movimento/data 
risulta semplice...
Ciao.
-- 
Sergio MAZZA 


Hai ragione, in effetti è un pò complicato quello che ho creato.
Ma il problema nasce dal fatto che mensilmente devo stampare una specie di 
cronologico. Sul report mi riporta, affiancati, in una metà il carico, nella 
seconda metà lo scarico.
In effetti, ogni giorno del mese, io vedo che carico e scarico è stato 
fatto.
Oggi ho smembrato un pò il db, e ho risolto parzialmente il problema in 
questo modo:
- Ho inserito una sola data, ad inserimento manuale (es. 10/12/2007)
- viene compilata la parte che riguarda il carico o lo scarico
- ho creato una query di selezione usando come WHERE la sintassi 
Month[DataCaricoScarico]=Month(now())
Così facendo, a fine mese mi stampa tutti i record inseriti nel mese in 
corso (e per ora va bene).
Basta ricordarsi di farlo ogni fine mese, perchè altrimenti, ovviamente, il 
mese successivo non mi riporterà nulla.
Ecco perchè volevo inserire come criterio della query un intervallo di data 
in cui cercare.
Un ulteriore problema che mi si presenterà (già lo so, ma in questo momento 
non saprei come gestirlo) sarà quando nella stessa giornata farò più di un 
movimento di Scarico (il Carico sarà impossibile farlo più di una volta al 
giorno, questo è sicuro); in tal casol'ideale sarà farmi riportare, nella 
riga del report di quel giorno, il totale dei movimenti di Scarico e non 
tante righe per tanti scarichi fatti in quel giorno.
PS: nel report ho inserito un controllo testo con sintassi: =Year(Now()) ed 
un altro : =Month(Now())
per l'anno è tutto ok, ma per il mese mi riporta il numerico. Per fargli 
indicare il mese in lettere?
Andrea 

 Andrea
Ciao.
-- 
Sergio MAZZA 


Grazie sei gentilissimo.
Domani mattina cerco di apportare questi miglioramenti e ti farò sapere 
l'esito.
Ciao
Andrea