grazie mille!
> ho due campi che rappresentano date in fomato aaaammgg (data di nascita e
> data attuale). Non ho problemi a ricavarmi eventualmente l'anno o il mese..ma
> a me servirebbe di calcolare l'età attuale della persona, (cioè data attuale
> - data nascita) considerando che se per esmpio ha 35 anni e 5 mesi, devo
> arrotondara a 35, mentre se ha 35 anni e 6 mesi, devo arrotondare a 36.
Ciao Dario.
Se i due campi (ma perche' due?) fossero di tipo Data/ora, allora se non
sbaglio un modo potrebbe essere il seguente:
EtaAssicurativa:
Year([T].[DataOdierna])-Year([T].[DataNascita])+Abs(DateSerial(Year([T].[DataOdierna]);Month([T].[DataNascita])-6;Day([T].[DataNascita])-1)<[T].[DataOdierna])-1
Se non fossero di tipo Data/ora... dicci di che tipo sono (*tipo*, non
*formato*).
(Facci sapere se e eventualmente come hai risolto. Grazie!)
--
Maurizio Borrelli [Microsoft MVP Office System]
http://www.riolab.org/
Ciao Dario, potresti fare una cosa del genere
IIf
((Month(date())-Month(datadinascita))<6;Year(date())-Year(datadinascita);Year(date())-Year(datadinascita)+1)
Fammi sapere.
Mimeacc
ciao
--
\\\|///
\\ - - //
( @ @ )
oOOO-- (_) --OOOo
----------------------------------
"Mimeacc" ha scritto:
"Maurizio Borrelli" ha scritto:
Allora, i campi (che sono 2 perke cosi mi passano il db....;-)) hanno
formato testo, esempio:
31/12/2007 è rappresentanto nel campo con 20071231.
Vi ringrazio per i suggerimenti, ma alla fine ho risolto cosi:
Faccio la differenza tra l'anno della data attuale e l'anno della data di
nascita (utilizzo la "left" per entrambi i campi. Poi, aggiungo 1 o 0 a
seconda che il valore assoluto della differenza dei mesi delle due date
(ottenuta con "left"&"right") sia > 6.
In pratica:
Età_Assicurativa: Left([Data riserva];4)-Left([data
nascita];4)+IIf(Abs(Right(Left([Data riserva];6);2)-Right(Left([data
nascita];6);2))<=5;0;1).
grazie di nuovo
Ciao Dario.
> > > ho due campi che rappresentano date in fomato aaaammgg (data di nascita e
> > > data attuale). Non ho problemi a ricavarmi eventualmente l'anno o il mese..ma
> > > a me servirebbe di calcolare l'età attuale della persona, (cioè data attuale
> > > - data nascita) considerando che se per esmpio ha 35 anni e 5 mesi, devo
> > > arrotondara a 35, mentre se ha 35 anni e 6 mesi, devo arrotondare a 36.
> > Se i due campi [...] fossero di tipo Data/ora, allora se non
> > sbaglio un modo potrebbe essere il seguente:
> > EtaAssicurativa:
> > Year([T].[DataOdierna])-Year([T].[DataNascita])+Abs(DateSerial(Year([T].[DataOdierna]);Month([T].[DataNascita])-6;Day([T].[DataNascita])-1)<[T].[DataOdierna])-1
> Allora, i campi [...] hanno formato testo,
Dunque assumiamo che siano di tipo Testo. Ok.
> esempio:
> 31/12/2007 è rappresentanto nel campo con 20071231.
> Vi ringrazio per i suggerimenti, ma alla fine ho risolto cosi:
> Faccio la differenza tra l'anno della data attuale e l'anno della data di
> nascita (utilizzo la "left" per entrambi i campi. Poi, aggiungo 1 o 0 a
> seconda che il valore assoluto della differenza dei mesi delle due date
> (ottenuta con "left"&"right") sia > 6.
> In pratica:
> Età_Assicurativa: Left([Data riserva];4)-Left([data
> nascita];4)+IIf(Abs(Right(Left([Data riserva];6);2)-Right(Left([data
> nascita];6);2))<=5;0;1).
> grazie di nuovo
Grazie a te del riscontro. Pero'...
Considera che secondo la tua formula un bambino nato il 17 novembre
dell`anno scorso avrebbe oggi, 16 maggio 2008, due anni.
La formula da me proposta, considerando il tipo Testo, risulterebbe:
Year(Format([dr];"0000-00-00"))-Year(Format([dn];"0000-00-00"))+Abs(DateSerial(Year(DateValue(Format([dr];"0000-00-00")));Month(DateValue(Format([dn];"0000-00-00")))-6;Day(DateValue(Format([dn];"0000-00-00")))-1)<(DateValue(Format([dr];"0000-00-00"))))-1
e il bambino di prima avrebbe zero anni.
Ne avrebbe invece uno per Mimeacc (ciao!), se ho convertito
correttamente la formula da lui proposta:
IIf((Month(Format([dr];"0000-00-00"))-Month(Format([dn];"0000-00-00")))<6;Year(Format([dr];"0000-00-00"))-Year(Format([dn];"0000-00-00"));Year(Format([dr];"0000-00-00"))-Year(Format([dn];"0000-00-00"))+1)
"Maurizio Borrelli" ha scritto:
> Grazie a te del riscontro. Pero'...
>
> Considera che secondo la tua formula un bambino nato il 17 novembre
> dell`anno scorso avrebbe oggi, 16 maggio 2008, due anni.
>
> La formula da me proposta, considerando il tipo Testo, risulterebbe:
>
> Year(Format([dr];"0000-00-00"))-Year(Format([dn];"0000-00-00"))+Abs(DateSerial(Year(DateValue(Format([dr];"0000-00-00")));Month(DateValue(Format([dn];"0000-00-00")))-6;Day(DateValue(Format([dn];"0000-00-00")))-1)<(DateValue(Format([dr];"0000-00-00"))))-1
>
> e il bambino di prima avrebbe zero anni.
>
> Ne avrebbe invece uno per Mimeacc (ciao!), se ho convertito
> correttamente la formula da lui proposta:
>
> IIf((Month(Format([dr];"0000-00-00"))-Month(Format([dn];"0000-00-00")))<6;Year(Format([dr];"0000-00-00"))-Year(Format([dn];"0000-00-00"));Year(Format([dr];"0000-00-00"))-Year(Format([dn];"0000-00-00"))+1)
>
> --
> Maurizio Borrelli [Microsoft MVP Office System]
> http://www.riolab.org/
>
>
Cavolo hai ragione!!!!!
Grazie per avermi fatto notare la cosa, ora modifoc la formula.
Grazie ancora.