Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

calcolo età in Access2000

931 views
Skip to first unread message

Ottavio Macino

unread,
Jun 26, 2002, 4:28:05 PM6/26/02
to
Nella mia tabella dati voglio calcolare (come facevo tranquillamente in
Excel) l'età al momento di una persona, partendo dalla sua data di nascita
(in Excel avevo la formula Adesso oppure Now () - CampoPrecedente ). In
Access non riesco a generarla. La vorrei inserire direttamente nella mia
tabella, nel campo età (oppure ditemi dove metterla).
Grazie


Carlo Costarella

unread,
Jun 27, 2002, 2:34:50 AM6/27/02
to

"Ottavio Macino" <ott...@tin.it> ha scritto nel messaggio
news:ptpS8.70761$Kt3.1...@twister2.libero.it...

Prova con questa funzione credo presa da www.sitocomune.com

Public Function Eta(DataNascita As Date)
Dim varEta As Variant
varEta = DateDiff("yyyy", DataNascita, Now)
If Date < DateSerial(Year(Now), Month(DataNascita), Day(DataNascita))
Then
varEta = varEta - 1
End If
Eta = varEta

End Function

Ciao, Carlo

Karl Donaubauer

unread,
Jun 27, 2002, 6:20:34 AM6/27/02
to
Ottavio Macino ha scritto:

Non si salva in una tabella ma calcola quando è necessario
p.e. in un campo di una query:

=DateDiff("aaaa";[datadinascita];Date())+
(Format(Date();"mmgg")<Format([datadinascita];"mmgg"))

Se non sbaglio con le abbreviazioni italiani.

--
HTH
Karl
*********
Access-FAQ (tedesco): http://www.donkarl.com


SuperPippo®

unread,
Jun 27, 2002, 7:32:34 AM6/27/02
to
"Karl Donaubauer" <ad...@donkarl.com> ha scritto nel messaggio
news:afeotq$do8n0$1...@ID-46617.news.dfncis.de...

> Non si salva in una tabella ma calcola quando è necessario
> p.e. in un campo di una query:
>
> =DateDiff("aaaa";[datadinascita];Date())+
> (Format(Date();"mmgg")<Format([datadinascita];"mmgg"))
>
> Se non sbaglio con le abbreviazioni italiani.
--------------->
ciao Karl... interessava anche me questa query...
ora però vorrei chiederti una cosa...
nella stessa query come posso fare a trovare delle fasce di età ??
per esempio da 0 > 30 anni
da 30 > 60 anni
e da 60 anni in poi ???
grazie...


Karl Donaubauer

unread,
Jun 27, 2002, 7:54:01 AM6/27/02
to
SuperPippo®" ha scritto:
> "Karl Donaubauer ha scritto:...

> > Non si salva in una tabella ma calcola quando è necessario
> > p.e. in un campo di una query:
> >
> > =DateDiff("aaaa";[datadinascita];Date())+
> > (Format(Date();"mmgg")<Format([datadinascita];"mmgg"))
> ...
> nella stessa query come posso fare a trovare delle fasce di età ??
> per esempio da 0 > 30 anni
> da 30 > 60 anni
> e da 60 anni in poi ???

Cosa intendi con "trovare"?
Cercare i record di una fase con un parametro/criterio o
aggiungere un attributo a ogni record se fa parte di quale fase?

--
cu

Ottavio Macino

unread,
Jun 28, 2002, 5:20:42 AM6/28/02
to
Già fatto, grazie:ma il problema mi rimane perchè (evidentemente sono
incapace in Access), non riesco a farlo funzionare o meglio: dove devo farlo
leggere?

"Carlo Costarella" <carloco...@libero.it> ha scritto nel messaggio
news:emyS8.74148$j65.1...@twister1.libero.it...


>
> "Ottavio Macino" <ott...@tin.it> ha scritto nel messaggio
> news:ptpS8.70761$Kt3.1...@twister2.libero.it...

Nella mia tabella dati voglio calcolarel'età al momento di una persona,


partendo dalla sua data di nascita

SuperPippo®

unread,
Jun 28, 2002, 12:46:54 PM6/28/02
to
"Karl Donaubauer" <ad...@donkarl.com> ha scritto nel messaggio
news:afeucu$cp9sb$1...@ID-46617.news.dfncis.de...

> SuperPippo®" ha scritto:
> > "Karl Donaubauer ha scritto:...
> > > Non si salva in una tabella ma calcola quando è necessario
> > > p.e. in un campo di una query:
> > >
> > > =DateDiff("aaaa";[datadinascita];Date())+
> > > (Format(Date();"mmgg")<Format([datadinascita];"mmgg"))
> > ...
> > nella stessa query come posso fare a trovare delle fasce di età ??
> > per esempio da 0 > 30 anni
> > da 30 > 60 anni
> > e da 60 anni in poi ???
>
> Cosa intendi con "trovare"?
> Cercare i record di una fase con un parametro/criterio o
> aggiungere un attributo a ogni record se fa parte di quale fase?
-----------------
beh... potrebbero essere utili tutte e due le soluzioni....
ma la seconda, penso, si adatti di più a fare un grafico
per fasce di età.... giusto ???
in sostanza devo dividere le tre fasce di età....
che dici ???

--
SuperPippo® [;o))

Karl Donaubauer

unread,
Jun 28, 2002, 1:03:26 PM6/28/02
to
SuperPippo ha scritto:
> "Karl Donaubauer ha scritto:
> > > > Non si salva in una tabella ma calcola quando è necessario
> > > > p.e. in un campo di una query:
> > > >
> > > > =DateDiff("aaaa";[datadinascita];Date())+
> > > > (Format(Date();"mmgg")<Format([datadinascita];"mmgg"))
> > > ...
> > > nella stessa query come posso fare a trovare delle fasce di età ??
> > > per esempio da 0 > 30 anni
> > > da 30 > 60 anni
> > > e da 60 anni in poi ???
> >
> > Cosa intendi con "trovare"?
> > Cercare i record di una fase con un parametro/criterio o
> > aggiungere un attributo a ogni record se fa parte di quale fase?
> -----------------
> beh... potrebbero essere utili tutte e due le soluzioni....
> ma la seconda, penso, si adatti di più a fare un grafico
> per fasce di età.... giusto ???
> in sostanza devo dividere le tre fasce di età....
> che dici ???

Prima fai un campo "eta" con l'espressione che già ho scritto.
Poi fai un altro campo con l'espressione:
Switch(eta<30;"A";eta>=30 And eta<60;"B";eta>=60;"C")

Certo puoi usare un altro testo che A, B, C che anche puoi usare
per ordinare, aggruppare o come criterio.


Karl Donaubauer

unread,
Jun 28, 2002, 1:10:32 PM6/28/02
to
SuperPippo ha scritto:
> "Karl Donaubauer ha scritto:
> > > > Non si salva in una tabella ma calcola quando è necessario
> > > > p.e. in un campo di una query:
> > > >
> > > > =DateDiff("aaaa";[datadinascita];Date())+
> > > > (Format(Date();"mmgg")<Format([datadinascita];"mmgg"))
> > > ...
> > > nella stessa query come posso fare a trovare delle fasce di età ??
> > > per esempio da 0 > 30 anni
> > > da 30 > 60 anni
> > > e da 60 anni in poi ???
> >
> > Cosa intendi con "trovare"?
> > Cercare i record di una fase con un parametro/criterio o
> > aggiungere un attributo a ogni record se fa parte di quale fase?
> -----------------
> beh... potrebbero essere utili tutte e due le soluzioni....
> ma la seconda, penso, si adatti di più a fare un grafico
> per fasce di età.... giusto ???
> in sostanza devo dividere le tre fasce di età....
> che dici ???

Prima fai un campo "eta" con l'espressione che già ho scritto.


Poi fai un altro campo con l'espressione:
Switch(eta<30;"A";eta>=30 And eta<60;"B";eta>=60;"C")

Certo puoi usare un altro testo (o numero) che A, B, C che
adesso puoi usare per ordinare, aggruppare o come criterio.

--
HTH

SuperPippo®

unread,
Jun 30, 2002, 3:46:52 AM6/30/02
to
> Prima fai un campo "eta" con l'espressione che già ho scritto.
> Poi fai un altro campo con l'espressione:
> Switch(eta<30;"A";eta>=30 And eta<60;"B";eta>=60;"C")
>
> Certo puoi usare un altro testo (o numero) che A, B, C che
> adesso puoi usare per ordinare, aggruppare o come criterio.
--------------->
Grazie Karl mi funziona perfettamente....
solo in Criterio non riesco a far funzionare la query...
esempio... Like [Digitare A oppure B oppure C ]
mi da un record vuoto...
come mai ... ciao...


Karl Donaubauer

unread,
Jun 30, 2002, 7:03:07 AM6/30/02
to
SuperPippo® <ik0qd...@SPAMlibero.it> ha scritto:

Se hai creato la query esattamente come ho scritto nel piccolo
esempio normalmente non puoi usare il criterio direttamente
al campo "eta" perché Access non capisce un Alias come "eta"
in un statement Where. Ma se questo è il problema Access ti da
una finestra per chiamarti di un parametro "eta".

2 metodi che puoi provare:
1. Ripetere la formula nel Switch() invece di solo usare il nome "eta".
Fa una espressione lungha con la formula 4 volte ma debbe funzionare.
2. e piu semplice è creare una seconda query che basarsi sulla prima
e usare il criterio nella seconda query.

SuperPippo®

unread,
Jun 30, 2002, 1:26:55 PM6/30/02
to
"Karl Donaubauer" <ad...@donkarl.com> ha scritto nel messaggio
news:afmol3$fin0t$1...@ID-46617.news.dfncis.de...
------------------
grazie Karl ho provato il 2° metodo... più semplice...e funziona
perfettamente..
ma vorrei chiederti una ultima cosa... nella finestrella che esce dal
comando Like..
Finestra immisione parametro se digito una frase più lunga per le
spiegazioni viene troncata...
è possibile far comparire la scritta anche a capo ???
mi spiego meglio con un esempio...
scrivo Like[Digitare A - B - C] e nella finestrella entra tutto il testo...
ma io vorrei scrivere
Like[ Digitare la lettera A per fascia di eta 0 >30, oppure B per fascia eta
30 > 60
e C per fascia di eta > 60]....
spero mi sono spiegato...
Jo...

ps... mi dispiace x Germania - Brasile... 0 - 2 !!!


Karl Donaubauer

unread,
Jul 1, 2002, 5:52:46 AM7/1/02
to
SuperPippo schrieb:
> "Karl Donaubauer ha scritto:
> > ...Access ti da

> > una finestra per chiamarti di un parametro "eta".

> nella finestrella che esce dal comando Like..


> Finestra immisione parametro se digito una frase più lunga per le
> spiegazioni viene troncata...
> è possibile far comparire la scritta anche a capo ???

No. La finestra è limitato a una righa con ca. 38 lettere.
Se hai bisogno di più debbi usare una maschera.

> ps... mi dispiace x Germania - Brasile... 0 - 2 !!!

Per me va be. Non sono un tedesco ma un austriaco (Vienna).

--
cu

SuperPippo®

unread,
Jul 1, 2002, 12:55:28 PM7/1/02
to
"Karl Donaubauer" <ad...@donkarl.com> ha scritto nel messaggio
news:afp8po$fgubn$1...@ID-46617.news.dfncis.de...

> SuperPippo schrieb:
> > "Karl Donaubauer ha scritto:
> > > ...Access ti da
> > > una finestra per chiamarti di un parametro "eta".
>
> > ps... mi dispiace x Germania - Brasile... 0 - 2 !!!
>
> Per me va be. Non sono un tedesco ma un austriaco (Vienna).
--------------->
Ok... grazie...di tutto... Ciao...


0 new messages