Newsgroup: it.comp.appl.access
Titolo: selezionare gruppo di record

Ho bisogno di creare una sottomaschera che contenga un intervallo di
record
Questa sottomaschera(che si trova nellamaschera CALENDARIO) pesca i
dati dallla tabella Calendario
per definire l intervallo della query da applicare alla tabella
calendario ho usato l sql col controllo BETWEEN
per cui sulla maschera ho 6 campi che prendono valori(tramite mio
codice) dai 2 calendari
e sono giornostart,gioroend,mesestart,meseend,annostart,annoend
applicando questi valori alla tabella calendario conl between mi
sembrava restiturim lintervallo giusto.poi pero facendo intervalli
diversi mi sono accorto che non va.
la tabella calendario è formata da 4 campi id anno mese giorno...e
sono gia tutti popolati
penso che l 'unico modo per avere l intervallo corretto è farlo
dall,id che è la chiave primaria e quindi  un contatore
dovrei quindi "leggere" ID del record defnito da annostart,mesestart
e
giorno start...e andare avanti afino a quello definito
annoend,meseend,giornoend
solo cosi posso ottenere il risultato di query esatto
ora..credo che sia una cosa fatta da codice...
come?


devo aggiungere che dai valori che mi ritonano da questo
interrogazione devo fare l'innerjoin  del campo ID con un altra tabella

 come?
Select .............. from tuatabella
where
tuatabella.giorno
&"/"& tutabella.mese
&"/"& tuatabella.anno
between forms!TuaMaschera!giornostart
&"/"& forms!TuaMaschera!mesestart
&"/"& forms!TuaMaschera!annostart
and forms!TuaMaschera!giornoend
&"/"& forms!TuaMaschera!meseend
&"/"& forms!TuaMaschera!annoend
-- 
Ciao
Geppo 

 - Mostra testo citato -
no  non funziona perchè la mia tabella calendario non è nel formato
dd//mm//yy
ma è composta da 4 campi,  id,anno mese giorno
e sono poloati cosi
1 1 gennaio 2010
2 2 gennaio 2010
3 3 gennaio 2010
..
..
32 1 febbraio 2010
ecc
per questo il normale between tra date non funziona e jho pensato che
l unico modo è far eil between degli id, una volta ottenuto ID di
datainizio e l ID di datafine

 datainizio e l ID di datafine
naaaa, perchè complicarsi la vita
-- 
Ciao
Geppo 

 ha scritto nel messaggionews:11232141-4acf-4a1c...@d16g2000yqb.googlegroups.com...

ho provato..non va..

 ho provato..non va..
allora, nella tabella il mese č registrato con il nome e non il numero 
giusto? per cui le cose cambiano, quindi se nella tabella la data č 
registrata cosi:
1 febbraio 2010
e  nella form cosi:
1 1 2010
il tutto dovrebbe diventare cosi:
Select .............. from tuatabella
where
format(formattuatabella.giorno
&" "& month(tuabella.mese &" "& tuatabella.anno)
&" "& tuatabella.anno, "dd/mm/yyyy")
between format(forms!TuaMaschera!giornostart
&" "& forms!TuaMaschera!mesestart
&" "& forms!TuaMaschera!annostart, "dd/mm/yyyy")
and format(forms!TuaMaschera!giornoend
&" "& forms!TuaMaschera!meseend
&" "& forms!TuaMaschera!annoend, "dd/mm/yyyy")
Se non va posta esattamente come sono riportati i dati nella tabella e nella 
form e se puoi anche lěsql della query.
-- 
Ciao
Geppo 

 - Mostra testo citato -
allora si nella tabella i mesi sono registrati come nome
quindi esattamente cosi
id     anno     mese      giorno
1      2010     gennaio     1
anche nella form il mese è registrato come nome, sono 6 caselle di
testo contenti
giornostart=15 mesestart=gennaio annostart=2010   giornoend=10
meseend=marzo annoend=2010
Io avevo gia fatto una query simile, ma funziona solo per intervalli
contenuti all interno dello stesso mese
quando seleziono fascie piu ampi, es 15 gennaio 2010 a 10 marzo 2010
tira fuori una query sballata...piu che altro incompleta, tronca..
la query usata, per non sbagliare è esattamente la prima che mi hai
mandato tu, ovviamente con i nomi delle mie tabelle e maschere..
ma cosi mi pare proprio che non puo andare..fa un impiccio con i
giorni
ciao!

 ciao!
-- 
Ciao
Geppo 

 - Mostra testo citato -
no quella no...piu tardi la provero e ti faccio sapere...!
ciao!

 - Mostra testo citato -
allor ho provato
ho fatto qualche correzione alla tua ultima xche se vedi bene la parte
dove hai inserito il primo format,subo dopo il where misa che non è
corretta
quindi rpima ho fatto
SELECT calendario.anno, calendario.mese, calendario.giorno
FROM calendario
WHERE (((Format([calendario].[giorno] & " " & month( [calendario].
[mese] & " " & [calendario].[anno]) & " " & calendario.anno ,"dd/mm/
yyyy")) Between Format([forms]![calendario]![giornostart] & " " &
[forms]![calendario]![mesestart] & " " & [forms]![calendario]!
[annostart],"dd/mm/yyyy") And Format([forms]![calendario]![giornoend]
& " " & [forms]![calendario]![meseend] & " " & [forms]![calendario]!
[annoend],"dd/mm/yyyy")));
ma insieme alla query di ritorno ricevevo errore di criteri non
corretti
poi ho modificato ulteriormente
SELECT calendario.anno, calendario.mese, calendario.giorno
FROM calendario
WHERE (((Format([calendario].[giorno] & " " & ([calendario].[mese] & "
" & [calendario].[anno]),"dd/mm/yyyy")) Between Format([forms]!
[calendario]![giornostart] & " " & [forms]![calendario]![mesestart] &
" " & [forms]![calendario]![annostart],"dd/mm/yyyy") And
Format([forms]![calendario]![giornoend] & " " & [forms]![calendario]!
[meseend] & " " & [forms]![calendario]![annoend],"dd/mm/yyyy")));
cosi non ho errori
pero tanto cosi,tanto come l hai postata te sia l ultima,sia la
prima...ho sempre lo stesso risultato mozzo
se inseirsco come date di inizio 10 gennaio 2010 e come fine 15 marzo
2010
ricevo risultati
dal 10 al 15 di genaio,di febbraio di marzo..e in alcuni correzzioni
pure di aprile maggio..tutti insomma

 dove hai inserito il primo format,subo dopo il where misa che non č

Prova adesso:
 SELECT calendario.anno, calendario.mese, calendario.giorno
 FROM calendario
 WHERE (((cdate(Format([calendario].[giorno] & " " & [calendario].[mese] & "
 " & [calendario].[anno],"dd/mm/yyyy"))) Between cdate(Format([forms]!
 [calendario]![giornostart] & " " & [forms]![calendario]![mesestart] &
 " " & [forms]![calendario]![annostart],"dd/mm/yyyy")) And
 cdate(Format([forms]![calendario]![giornoend] & " " & [forms]![calendario]!
 [meseend] & " " & [forms]![calendario]![annoend],"dd/mm/yyyy"))));
-- 
Ciao
Geppo 

 - Mostra testo citato -
forse ci stiamo avvicinando
la query che mi esce sembra corretta,la parte di  schermata che riesco
a vedere sembra a posto,solo che mi esce l errore tipo di dati non
corrispondente nell espressione criterio
e dopo che do ok..spariscono i dati
c'è qualcosina da sitemare!

 c'è qualcosina da sitemare!
copia incolla e fai sapere:
SELECT calendario.anno, calendario.mese, calendario.giorno
FROM [calendario]
WHERE (((cdate(Format(calendario.giorno
& " " & calendario.mese & " " & calendario.anno,"dd/mm/yyyy")))


 ha scritto nel messaggionews:22ec728e-a333-432a...@i31g2000yqm.googlegroups.com...

stessa cosa
mi da sempre quell errore
in piu noto che se uso range di date diverse ho risultati diversi, in
alcune query mi da solo errore senza farmi vedere nulla,in altre
invece vedo una parte di dati che sembra corretta e poi l errore
la butto là..potrebbe entrarci qualcosa il giorno quando è in cifra
singola(1,2,3,4,5,6,7,8,9) e come è definito nella tabella?prima era
"precisione doppia"
ho messo intero..ma per la verita non cambnia nulla
nemmeno se scrivo 05 invece di 5

 ha scritto nel messaggionews:22ec728e-a333-432a...@i31g2000yqm.googlegroups.com...

ecco credo di aver capito
quando il numero del giorno fine è piu piccolo del giorno inzio
ad esmpio 10 gennaio 2010 fino a 7 febbraio 2010
oltre l errore non vedo visualizzato nessun dato...

 oltre l errore non vedo visualizzato nessun dato...
scarica questo db su cui ho fatto le prove e cerca di capire:
http://cid-a734483435bdfa6a.office.live.com/self.aspx/.Public/calendario.mdb
-- 
Ciao
Geppo 

 Geppo
mah..anche col tuo file stesso problema..
a te funziona??

 a te funziona??
yes con windows 7 64bit + office 2003.
-- 
Ciao
Geppo
 

 - Mostra testo citato -
ma a parte che c'erano meni di decina di date sparse inserite nel
calendario
ti torna?
a me da sempre quell errore, xp  office 2003

 - Mostra testo citato -
anche su un altro xppero con office 2007 mi da lo stesso errore
sembra sia un problema di definizioni divariabili..eppure sono tutte
definite come testo
i campi dellemaschere per default..sono testo o cosa?

 - Mostra testo citato -
allora è la funzione cdate che crea l errore
se la tolgo l errore sparisce, ma ritorno ad avere una query di
ritorno non corretta...
come si usa sto cdate?

 come si usa sto cdate?
a me non da nessun errore e funziona una meraviglia.
Se puoi postare copia del tuo db, prova a vedere se l'errore lo riscontro 
anch'io.
-- 
Ciao
Geppo
 

Ciao "Geppo Beach" <c...@tin.it.invalid> ha scritto nel messaggio 
news:gjG_n.189431$9f6.3...@twister1.libero.it...

prova anche con questo criterio, probabile che SQL vuole la data mm/dd/yyyy:
WHERE (("#"& (Format(calendario.giorno & " " & calendario.mese & " " & 
calendario.anno,"mm/dd/yyyy")&"#") Between "#"& 
(Format(forms!calendario!giornostart & " " & forms!calendario!mesestart & " 
" & forms!calendario!annostart,"mm/dd/yyyy")&"#") And 
"#"&(Format(forms!calendario!giornoend & " " & forms!calendario!meseend & " 
" & forms!calendario!annoend,"mm/dd/yyyy")&"#")));
e cosi:
WHERE (((Format(calendario.giorno & " " & calendario.mese & " " & 
calendario.anno,"mm/dd/yyyy")) Between (Format(forms!calendario!giornostart 
& " " & forms!calendario!mesestart & " " & 
forms!calendario!annostart,"mm/dd/yyyy")) And 
(Format(forms!calendario!giornoend & " " & forms!calendario!meseend & " " & 
forms!calendario!annoend,"mm/dd/yyyy"))));
-- 
Ciao
Geppo 

 - Mostra testo citato -
oohhh..sempre piu vicini
ora entrambe le sql non danno errore
ma...sigh c'è ancora un ma
non prende l anno
nel senso che l intervallo tipo 10 febbraio 2010 15 marzo 2010
in realta me lo restituisce per tutti gli anno presenti nella tabella
calendario e non solo per il 2010!

 - Mostra testo citato -
RISOLTO!!!
nella definizione della data della funzione format, seguendo la tua
correzione ne ho fatta un altra
yyyy/mm/dd...invece di mm/dd/yyyy
Meno Male!!!
un grazie enorme!!!
ciao!

 ciao!
-- 
Ciao
Geppo 

 - Mostra testo citato -
FUNZIONA!!
seguendo la tua correzione ho cambiato il parametro della funzione
format
in yyyy/mm/dd  invece che mm/dd/yyyy
Un enorme grazie!
ciao