Newsgroup: it.comp.appl.access
Titolo: gestione compleanno

In una tabella ho inserito la data del compleanno di ogni persona..
vorrei creare una query che mi visualizzi le persone che, tenendo
conto della data odierna, mi visualizzi chi compie gli anni nei
prossimi 25 giorni...attenzione non solamente nel 25 giorno..devono
essere compresi tutti i 25 giorni.. ho dato un'occhiata se trovavo
qualcosa nel newsgroup..ma non ho trovato nulla...sigh
potete aiutarmi?
alessia

alessia wrote:

Quale e' il problema? Fai una query con la data compresa tra oggi ed
oggi + 25!
Saluti.
-- 
I'am what I'am, I do what I can

Il Tue, 30 Sep 2003 20:09:11 GMT, "Setec Astronomy"
<setec@_NO_NOSPAM_freemail.it> ha scritto:

certo..ma non è così facile come dici tu...(almeno per me) ...
se la data di nascita di una persona è il 15/10/65
e  io metto nei criteri della query  between date() and date()+25
è ovvio che non mi visualizzerà nessun risultato...
come posso fare??

 come posso fare??
Adoro quelli che vogliono la pappa pronta ...
Dim data1 As Date
Dim data2 As Date
Dim sql As String
data1 = Date
data2 = data1 + 25
sql = "SELECT tblCompleanni.* FROM tblCompleanni WHERE
tblCompleanni.DATA Between '#" & data1 & "#' And '#" & data2 & "#'"
MsgBox (sql)


Setec Astronomy ha scritto:

ciao setec...
mi sa che non funziona, date e' oggi, date + 25 sara' il 24 ottobre del
2003
ed io che sono nato il 20 ottobre dell'anno x non ci sono!
(sono sicuramente piu' piccolo di date)
Vista la tua perizia ho l'impressione che mi sia sfuggito qualcosa?
--
a.cara
togli qualcosa dall'email

 Vista la tua perizia ho l'impressione che mi sia sfuggito qualcosa?
Function CompieGliAnni(DataCompleanno As Date, Giorni As Integer) As
Boolean
Dim Data1 As Date
Dim Data2 As Date
Data1 = CDate(Month(DataCompleanno) & "/" & Day(DataCompleanno) & "/" &
Year(Now))
Data2 = Date + Giorni
If (Data1 >= Date) And (Data1 <= Data2) Then
    CompieGliAnni = True
Else
    CompieGliAnni = False
End If
End Function
SELECT tblCompleanni.* FROM tblCompleanni WHERE
CompieGliAnni(tblCompleanni.Data, 25)


Setec Astronomy ha scritto:

ariciao setec...
e' stato un po faticoso seguirla ma a occhio dovrebbe funzionare ;<)
P.S. Bisogna avvisare alessia che la funzione la deve fare public in
modulo
inoltre, la considererei riduttiva riferita ai soli compleanni visto
che, passando il delta di data, si puo' usare anche per la verifica di
scadenze diverse, passate e future ;<)


 ...
Temo in dicembre solo per i primi 6 giorni e anche non per un
29 Feb in un anno non bisestile.
-- 
cu
Karl
*********
Access-FAQ (tedesco): 
http://www.donkarl.com

 29 Feb in un anno non bisestile.
Come ho gia' scritto:
Adoro quelli che vogliono la pappa pronta ...
-- 


alessia ha scritto:

Il mio FAQ 3.12 in italiano č ca.:
Faiti 2 nuovi campi calcolati nella query:
Compl: DateAdd("aaaa";nz(DatDiff("aaaa";[compleanno];Date()));[compleanno])
e
ComplPr:
DateAdd("aaaa";nz(DatDiff("aaaa";[compleanno];Date()))+1;[compleanno])
Dove "compleanno" č il tuo campo nella tabella.
Il primo campo calcolato ti da il compleanno in questo anno,
il secondo nel prossimo anno per sistemare dati vicino a capodanno.
Come criterio nel primo campo scrivi:
Between Date() And Date() + 25
Nel secondo campo scrivi lo stesso criterio ma una righa piů
giů che l'altro per ottenere un o.
-- 
HTH


 qualcosa nel newsgroup..ma non ho trovato nulla...
Il mio FAQ 3.12 in italiano č ca.:
Crearti 2 nuovi campi calcolati nella query:
DateAdd("aaaa";nz(DateDiff("aaaa";[compleanno];Date()));[compleanno])
e
DateAdd("aaaa";nz(DateDiff("aaaa";[compleanno];Date()))+1;[compleanno])
Dove "compleanno" č il nome del tuo campo nella tabella.
Il primo campo calcolato ti da il compleanno in quest'anno,


alessia ha scritto:

Io l'ho inserito già da parecchio tempo nel dbase dei dipendenti per non
dimenticarmi i compleanni ed evitare quindi le figuracce!
Riporto la mia query, che sostanzialmente è la stessa che ti hanno già
suggerito, non fa altro che calcolare in ogni record una data con l'anno
uguale a quello di nascita della persona, e il mese e il giorno correnti,
e confrontarla con la data corrente.
Potresti fare anche il contrario, calcolare una data con l'anno corrente e
il mese e giorno di nascita della persona e confrontarla con Date(), è la
stessa cosa.
SELECT [nome] & " " & [cognome] AS dip, nascita
FROM DIPENDENTI
WHERE Abs(nz(nascita) - dateserial(year(nz(nascita)), month(date),
day(date))) < intervallo;
intervallo è il numero di giorni desiderato, nel tuo caso sarà 25
con questo criterio rilevi i compleanni caduti entro i prossimi
"intervallo" giorni, ma anche quelli caduti negli "intervallo" giorni
passati.
Se vuoi solo i compleanni futuri, togli Abs().
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Adoro quelli che vogliono la pappa pronta ...
e noi adoriamo quelli che ce la danno. Mi raccomando, ben condita! ;<)
--
a.cara 
Togli qualcosa dall'email

...
Se non vedo male c'è ancora il problema col capodanno
cioè compleanni in gennaio non sono trovato con una data
corrente >6 dicembre (se intervallo=25).
-- 
cu


Karl Donaubauer ha scritto:


E' vero, in quel caso non funziona.
Lo modificherei così, escludendo l'Abs() per i compleanni già passati:
WHERE nz(nascita) -
dateserial(year(nz(nascita))+iif(month(nascita)<month(date);1;0),
month(date), day(date)) < intervallo;


 month(date), day(date)) < intervallo;
Se non vedo male (adesso dopo la prima colazione):
1. debb'essere , invece del ; nel SQL
2. -1 invece del 1
3. non c'è bisogno del iif ma basta: +(month(nascita)<month(date))...
perché True = -1, False = 0
4. <= intervallo
-- 
HTH


Karl Donaubauer ha scritto:




Giusto. Con le tue modifiche dovrebbe funzionare bene.
Grazie per l'aiuto. Con il lavoro di squadra i problemi si risolvono
meglio e più in fretta.
Mi sono chiesto più volte cosa potrebbe venire fuori da un gruppo di
lavoro composto dai più attivi partecipanti di questo newsgroup.....


 lavoro composto dai più attivi partecipanti di questo newsgroup.....
Una zuffa feroce?
-- 
;-)


 Una zuffa feroce?
Eheheh! Questa è l'opzione più probabile!
La seconda è che ne esca il famigerato compilatore per Access, per
convertire i .mdb in .exe.
