Newsgroup: it.comp.appl.access
Titolo: Estrapolare data di nascita da codice fiscale

Buongiorno a tutti,
com'č noto, il codice fiscale contiene il sesso, la data di nascita e il 
comune di nascita della persona.
Sarebbe possibile che il campo DATA DI NASCITA venga popolato 
autometicamente estrapolando i dati su dopo aggiornamento del cmp CODICE 
FISCALE?
Quello che mi blocca č come differenziare il sesso perchč il giorno della 
data di nascita per le donne č maggiorato di 40 mentre per gli uomini no. 
Dovrei creare anche il campo F/M?
Grazie per l'attenzione.
Giorgia 

 Giorgia
Nel C.F. i Char(7-8) sono riferiti all'anno il Char(9) è il mese e i
Char(10-11) sono il giorno..!
L'ultimo Char è il sesso... ti basta scrivere una funzione che
estrapolando i dati ed in base a X=Maschio o Y=Femmina faccia un
DateAdd("g",40,TuaData)....
Fai attenzione alle date dei vecchissimi... nati tra il 1900 ed il
1911... ed andando avanti negli anni...
@Alex

>>>>  
http://www.bb2002.it
 :)  <<<<<
........... [ al lavoro ] ...........

 ........... [ al lavoro ] ...........
Tutti i miei rispetti per la nonnina.... priorità su tutto...!
;-)
@Alex

 Giorgia
xxxyyy75C07x999y
Vuol dire :
anno di nascita 1975 (75)
mese di nascita Marzo (C)
giorno fi nascita 7 (07)
sesso M perché il giorno é < di 40 (cifra che si aggiunge per le F al
giorno di nascita)
Sta attenta solo alle lettere dei mesi (nn sono consecutive come
immagini... Cerca su google e troverai la codifica)
;)

 Giorgia
xxxyyy75C07x999y
Vuol dire :
anno di nascita 1975 (75)
mese di nascita Marzo (C)
giorno fi nascita 7 (07)
sesso M perché il giorno é < di 40 (cifra che si aggiunge per le F al
giorno di nascita)
Sta attenta solo alle lettere dei mesi (nn sono consecutive come
immagini... Cerca su google e troverai la codifica)
;)
Va bene grazie, cercherň la codifica...anzi la decodifica, ma nel linguaggio 
VBA come faccio a "dire":
[data di nascita]= format (year([la settima e l'ottava cifra/carattere del 
codice fiscale])& format(month([nona cifra del codice fiscale]).......
Giorgia

 Giorgia
vai sull'help e cerca
MID
Antonio 

 Giorgia
Allora, ho cercato di usare la funzione Mid, e di trovare la decodifica dei 
mesi, ma ho queste difficoltà ad intersecare le varie informazioni:
- devo specificare la decodifica dei mesi usando la funzione If o c'è qsa di 
più veloce?
(la decodifica che ho trovato è Gennaio = A | Febbraio = B | Marzo = C | 
Aprile = D | Maggio = E | Giugno = H | Luglio = L | Agosto = M | Settembre = 
P | Ottobre = R | Novembre = S | Dicembre = T |)
Io ho iniziato così ma dubito sia una sintassi corretta e dove specifico i 
mesi corrispondenti alle lettere?
Private Sub CODICE_FISCALE_AfterUpdate()
Dim Stringa, Giorno, Mese, ANNO
Stringa = "[CODICE FISCALE]"
Giorno = Mid(Stringa, 10, 2)
Mese = Mid(Stringa, 9, 2)
ANNO = Mid(Stringa, 7, 2)
If [DATA DI NASCITA] Is Null Then
Me.DATA_DI_NASCITA = Format(Day("Giorno")) & Month("Mese") & Year("Anno")
End If
End Sub
Grazie, Giorgia 

 End Sub
Ti sei applicata brava... :-P
anche se con qualche errore
se referenzi le variabili giorno mese anno non le devi mettere tra doppi 
apici
e poi
mese non è mid 9 2 ma caso mai mid 9 1
prepara una tabella in cui metti due campi, uno numerico mese_num e uno 
stringa mese_lett
Ci metti 1 A - 2 B e così via fino a 12 T
una volta che hai la lettera con la mid, il mese numerico sarà
mese_num = dlookup("mese_num","Tab_mesi","mese_lett = '" & mese & "'")
la data sarà
format(giorno,"00") & "-" & format(mese_num,"00") & "-" & anno
Antonio


Grazie mille Antonio,
credo per� di dover fare ancora qualche modifica soprattutto per il giorno 
perch� nel caso si tratti di una donna bisogna togliere 40.
Con questo codice fiscale per es:
xxxyyy56L07x219y
con questa stringa
Private Sub CODICE_FISCALE_AfterUpdate()
Dim Stringa, Giorno, Mese, Anno
Stringa = Me.CODICE_FISCALE
Giorno = Mid(Stringa, 10, 2)
Mese = DLookup("MESE_NUM", "MESE CF", "MESE_LETT" = "" & Mese & "")
Anno = Mid(Stringa, 7, 2)
Me.DATA_DI_NASCITA = Format(Giorno, "00") & "/" & Format(Mese, "00") & "/" & 
Anno
End Sub
ottengo questa data di nascita
57//56........
anche per l'anno come faccio ad avere le 4 cifre?(1956)
Grazie mille per l'aiuto.
Giorgia 

 Giorgia
DATANASCITA=Mid([CF];10;2) & "/" & IIf(Mid([CF];
9;1)="A";"01";IIf(Mid([CF];9;1)="B";"02";IIf(Mid([CF];
9;1)="C";"03";IIf(Mid([CF];9;1)="D";"04";IIf(Mid([CF];
9;1)="E";"05";IIf(Mid([CF];9;1)="H";"06";IIf(Mid([CF];
9;1)="L";"07";IIf(Mid([CF];9;1)="M";"08";IIf(Mid([CF];
9;1)="P";"09";IIf(Mid([CF];9;1)="R";"10";IIf(Mid([CF];
9;1)="S";"11";IIf(Mid([CF];9;1)="T";"12";"01")))))))))))) & "/" &
Mid([CF];7;2)
SESSO=IIf([CF];IIf(Mid([CF];10;2)>40;"F";"M");"")

 ha scritto nel messaggionews:ir5874$vos$1...@speranza.aioe.org...> Buongiorno a tutti,

Ponendo che il campo in cui inserisco il CF si chiami "CFInverso",
questa e' la soluzione...
DATANASCITA=Mid([CFInverso];10;2) & "/" & IIf(Mid([CFInverso];
9;1)="A";"01";IIf(Mid([CFInverso];9;1)="B";"02";IIf(Mid([CFInverso];
9;1)="C";"03";IIf(Mid([CFInverso];9;1)="D";"04";IIf(Mid([CFInverso];
9;1)="E";"05";IIf(Mid([CFInverso];9;1)="H";"06";IIf(Mid([CFInverso];
9;1)="L";"07";IIf(Mid([CFInverso];9;1)="M";"08";IIf(Mid([CFInverso];
9;1)="P";"09";IIf(Mid([CFInverso];9;1)="R";"10";IIf(Mid([CFInverso];
9;1)="S";"11";IIf(Mid([CFInverso];9;1)="T";"12";"01")))))))))))) & "/"
& Mid([CFInverso];7;2)

 Giorgia
Io farei cosi' :
function DT_NASCITA_DA_CODICE_FISCALE(CF as string) as string
' CF e' la stringa codice fiscale
dim Dt_Nascita  as string
dim Giorno as long
if  ASSURDO(CF) then DT_NASCITA_DA_CODICE_FISCALE = "" : exit function
Giorno = clng(mid(CF, 10,2))
if Giorno < 40 then
   ' e' maschio
    Dt_Nascita = format(Giorno, "00")  & "/" & S_Mese(mid(CF,9,1))  &
"/" & "19" & mid(CF, 7, 2)
else
   ' non e' maschio
    giorno = giorno - 40
    Dt_Nascita = format(Giorno, "00")  & "/" & S_Mese(mid(CF,9,1))  &
"/" & "19" & mid(CF, 7, 2)
endif
DT_NASCITA_DA_CODICE_FISCALE = dt_nascita
end function
dove :
a)
S_Mese e' una funzione che riceve una lettera e restituisce
la stringa numero del mese :
private function S_Mese( G as string) as string
     select case G
               case "C" : S_Mese = " ... "
               case " .." : S_Mese = " ..."
               ....
    end select
end function
e dove
b)
ASSURDO(X) e' una funzione che restituisce
true se il codice fiscale non e' (teoricamente) corretto.
Per esempio se ha meno di 16 caratteri.
Ti puo' andar bene ?

 Giorgia
Bella, questa me l'ha scaricata oggi...
Antonio 

 Antonio
Se vuoi sapere una cosa, avro' risposto a giorgia 12 volte... manco 1
e' apparsa... :D

 ha scritto nel messaggio 
news:8cdb6c6d-d0a7-43c8...@hi9g2000vbb.googlegroups.com...

Vuoi dire che Giorgia fagocita tutto ???
Antonio
P.S.
mi sono apparse anche due tue e una del becero innominabile 

 mi sono apparse anche due tue e una del becero innominabile
vabbe' meglio che quelle non le leggi, altrimenti poi "sudi" nel
litigare. :D

 ha scritto nel messaggio 
news:ivjtgd$9ln$1...@speranza.aioe.org...

Allora non mi avete dimenticato!!
Ricevuto tutto oggi, ora studio!
Giorgia 

 Giorgia
ROTFL
Pensa i colpi che c'hai mannato dicendo: guarda questi, gli ho sbattuto le 
ciglia da maliarda, ho accavallato le gambe stile basic instinct, ma manco 
me se filano...
ahahahahahaha
Antonio 

 ha scritto nel messaggionews:ivp4fp$8kn$1...@speranza.aioe.org...

Guarda che Giorgina e' grande ballerina di Folk, altro che Basic
Instinct...  con sbatte gli speroni lei stile FarWest non li sbatte
nessuna (vero Giorgi???) ! :D

 ha scritto nel messaggio 
news:03df78cc-dbb4-4c50...@b21g2000yqc.googlegroups.com...

Brrrravo!! ben detto Prof!
Arrivo a cavallo se non mi rispondete altro che!!

 ha scritto nel messaggio 
news:ivjnb6$pkq$1...@speranza.aioe.org...

E comunque non mi avete risposto......sigh!
un aiutino please! 

 ha scritto nel messaggio 
news:j01pdk$kbh$1...@speranza.aioe.org...

come no????
Antonio 

Giorgia ha scritto:


e sono 15!!!!!
Es. il tuo campo si chiama CFInverso... la formula per la data eccaqqqua!
=Mid([CFInverso];10;2) & "/" &
IIf(Mid([CFInverso];9;1)="A";"01";IIf(Mid([CFInverso];9;1)="B";"02";IIf(Mid([CFInverso];9;1)="C";"03";IIf(Mid([CFInverso];9;1)="D";"04";IIf(Mid([CFInverso];9;1)="E";"05";IIf(Mid([CFInverso];9;1)="H";"06";IIf(Mid([CFInverso];9;1)="L";"07";IIf(Mid([CFInverso];9;1)="M";"08";IIf(Mid([CFInverso];9;1)="P";"09";IIf(Mid([CFInverso];9;1)="R";"10";IIf(Mid([CFInverso];9;1)="S";"11";IIf(Mid([CFInverso];9;1)="T";"12";"01"))))))))))))
& "/" & Mid([CFInverso];7;2)
-- 
Ciao
Pablitomf
-----------------------------------
Napoli nel "Q"uore.... sempre e comunque.
-----------------------------------
Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 un aiutino please!
ti ho appena risposto io su per l'ennesima volta... questa pero' e'
arrivata, quindi la vedi anche tu :D

 un aiutino please!
e sono 15!!!!
Es. Il tuo campo si chiama CFInverso... questa e' la formula per la
data di nascita... ;)


 ha scritto nel messaggio 
news:ba1fe9b1-06ef-4dcf...@g12g2000yqd.googlegroups.com...

Quasi ok...ma per le signorine non mi toglie i 40 in più dal gg di nascita e 
l'annodi nascita non è nel formato yyyy ma yy.
Non ho il campo [SESSO], è possibile indicare la condizione direttamente 
nella stringa per es
if > 40 then....quarchecccosa?
Giorgia 

 Giorgia
iif(Mid([CFInverso];10;2)>31;Mid([CFInverso];10;2)-40;Mid([CFInverso];10;2))
format(Mid([CFInverso];7;2);"yyyy")
Antonio 

 ha scritto nel messaggionews:j090ni$gd6$1...@speranza.aioe.org...

peccato che la stessa domanda te l'abbia fatta radicale... chissa'
come avresti risposto! :D

 come avresti risposto! :D
1) radicale è maleducato e strafottente
2) radicale non c'ha le bocce...
Antonio 

 2) radicale non c'ha le bocce...
io credo piuttosto che per te valga solo il punto 2 :D

 ha scritto nel messaggio 
news:acf41f0f-c348-46ab...@e40g2000yqn.googlegroups.com...

Vero, ma mi sembrava alquanto complessa...ora provo a inserire il 
suggerimento del tuo amico....
E io che pensavo che solo la patata fosse un aiuto....ora anche le 
bocce...eh eh
Giorgia 

 Antonio
Ciao Antonio,
Format(Mid([CODICE FISCALE], 7, 2), "yyyy") mi restituisce 1900 e non 1980 
come dovrebbe...perchè non rileva più la cifra dal cf?
Grazie
Giorgia 

"Giorgia"  ha scritto nel messaggio news:j0bgku$8vi$1...@speranza.aioe.org...


Giorgia
_Risposta:
fanno gioco di squadra
MA

 come dovrebbe...perchč non rileva piů la cifra dal cf?
Dipende dove hai messo 'sta cosa
prova con "aaaa"
Antonio 

 Giorgia
Gioia mia... la prima è sufficientemente standard, le seconde sono piuttosto 
discriminanti!!!
Antonio 

 ha scritto nel messaggio 
news:j0clc9$91t$1...@speranza.aioe.org...

NAAAA.....uff
ora mi compare 28/05/aaaa....
"'sta cosa" l'ho messa cosě:
Me.DATA_DI_NASCITA = IIf(Mid([CODICE FISCALE], 10, 2) > 31, Mid([CODICE 
FISCALE], 10, 2) - 40, Mid([CODICE FISCALE], 10, 2)) & "/" & IIf(Mid([CODICE 
FISCALE], 9, 1) = "A", "01", IIf(Mid([CODICE FISCALE], 9, 1) = "B", "02", 
IIf(Mid([CODICE FISCALE], 9, 1) = "C", "03", IIf(Mid([CODICE FISCALE], 9, 1) 
= "D", "04", IIf(Mid([CODICE FISCALE], 9, 1) = "E", "05", IIf(Mid([CODICE 
FISCALE], 9, 1) = "H", "06", IIf(Mid([CODICE FISCALE], 9, 1) = "L", "07", 
IIf(Mid([CODICE FISCALE], 9, 1) = "M", "08", IIf(Mid([CODICE FISCALE], 9, 1) 
= "P", "09", IIf(Mid([CODICE FISCALE], 9, 1) = "R", "10", IIf(Mid([CODICE 
FISCALE], 9, 1) = "S", "11", IIf(Mid([CODICE FISCALE], 9, 1) = "T", "12", 
"01")))))))))))) & "/" & Format(Mid([CODICE FISCALE], 7, 2), "aaaa")
Giorgia 


Ohhhh my ???????????????
Cmq la formattazione "aaaa" e' valida per una data tu stai editando un, 
forse, numero. Ariforse "0000" puo' andare meglio (ma non assicuro).
P.S. Scrivi troppo io tutta sta cosa:
IIf(Mid([CODICE
 > FISCALE], 9, 1) = "A", "01", IIf(Mid([CODICE FISCALE], 9, 1) = "B", "02",
 > IIf(Mid([CODICE FISCALE], 9, 1) = "C", "03", IIf(Mid([CODICE 
FISCALE], 9, 1)
 > = "D", "04", IIf(Mid([CODICE FISCALE], 9, 1) = "E", "05", IIf(Mid([CODICE
 > FISCALE], 9, 1) = "H", "06", IIf(Mid([CODICE FISCALE], 9, 1) = "L", "07",
 > IIf(Mid([CODICE FISCALE], 9, 1) = "M", "08", IIf(Mid([CODICE 
FISCALE], 9, 1)
 > = "P", "09", IIf(Mid([CODICE FISCALE], 9, 1) = "R", "10", IIf(Mid([CODICE
 > FISCALE], 9, 1) = "S", "11", IIf(Mid([CODICE FISCALE], 9, 1) = "T", "12",
l'avrei scritta format(instr("ABCDEHLMPRST",Mid([CODICE FISCALE], 9, 
1)),"00")
e magari il giorno:
format(Mid([CODICE FISCALE], 10, 2) MOD 40 + 1,"00")
-- 
ac (x=y-1)

 ...
Se non erro (cioč non ci sono regole in piů?), dalle due ciffre del CF
non si puo dedurre il secolo con certezza. "09" puo essere 1909
o 2009. Quindi non esiste nessuna soluzione esatta.
Se p.e. si decide di escludere/discriminare i vecchissimi (il Biso ecc.)
un'espressione possibile sarebbe:
19-(Mid([CODICE FISCALE],7,2)<=Format(Date(),"yy")) & _
    Mid([CODICE FISCALE],7,2)
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 

 ora mi compare 28/05/aaaa....
ma se provi a testare il valore di Mid([CODICE FISCALE], 7, 2) cosa ti 
torna?
Antonio 

 torna?
Come già scritto da ac:
Al massimo 2 ciffre con le quali non puo usare Format(...,"yyyy")
perché bisogna una data completta. Altrimenti 00 a 99 sono letti
come i giorni 0 a 99 dal primo giorno di Access (30/12/1899)
ed il risultato del Format(...,"yyyy") è 1899 o 1900.


 o 2009. Quindi non esiste nessuna soluzione esatta.
Non sono entrato piu' di tanto nella questione. Piu' che altro mi ha 
folgorato la batteria di "iif".  ;-{)
-- 
ac (x=y-1)

 ed il risultato del Format(...,"yyyy") è 1899 o 1900.
porc è vero!!!
quale è l'algoritmo che nei vari sistemi viene utilizzato per discriminare 
(e che potrebbe essere usato anche da Giorgia)?
si potrebbe pensare ad un valore limite: se anno > X attacca "19" altrimenti 
"20" ma quale valore stabilire?
Qualcuno sa come viene interpretato un CF adesso?
per la batteria di iif che da tanto fastidio a Cara, Giorgia, la prossima 
volta creati una funzione a cui passi il codice fiscale e che ti torna la 
data
dentro il codice usi if then else
Antonio 

 dentro il codice usi if then else
(che non canbierebbe la sostanza delle cose)
Biso te la spiego come ad un ingegnere.
1) La if genera 2 percorsi diversi
2) Ogni if inserita in un altra if (nidificata) provoca il 
raddoppiamento delle uscite
3) Ogni ramo generato aumenta la complessita'
4) Andrebbero verificati (testati) tutti i percorsi
5) Scrivere tanto consuma la tastiera
6) Il consumo della tastiera puo' provocare l'inaffidabilita' dei tasti
7) L'inaffidabiita' dei tasti rende la stazione di lavoro inutilizzabile.
8) La inutilita' della stazione di lavoro consiglia un giretto in campagna
9) A passi lunghi e ben distesi.
-- 
ac (x=y-1)

 9) A passi lunghi e ben distesi.
col passo dell'oca?
dove vai, a Predappio?
Antonio 


wrote:

Ma tu devi anche capire che Giorgina deve "apprendere"... per cui al
momento gli "IIF" le servono come il pane per entrare nel
meccanismo... poi la modifichera' pian pianino... ;)

 ha scritto nel messaggio 
news:j0jtjq$tql$2...@speranza.aioe.org...

Altra domanda.....ma cosa vi fumate??;-P
Giorgia 

 Giorgia
Io non fumo perchè non mi piace, lui per scelta esistenziale credo non abbia 
mai "fumato"...
:-P
Antonio 


e infatti con "0000" l'anno 1973 viene restituito come 0073....
aaarghh
scrivo troppo ma ormai ho scritto...;-)
Giorgia 

 Giorgia
campagna = na paglia! ;)

 Altra domanda.....ma cosa vi fumate??;-P
Fumo e bevo tutto quello che mi passa attorno. ;-{)
Ma devi capire, con una senilita' galoppante e non andando piu' a 
"ragasse", e' rimasto solo il fumare (di tutto) ed il bere (di tutto, 
tranne l'acqua e la cola) le altre tossine le scarico "litigando" con Bisio.
-- 
ac (x=y-1)

 ha scritto nel messaggio 
news:fBvXp.56006$GZ3....@tornado.fastwebnet.it...

Bisio...
Allora vuoi litigą sul serio!!!
Antonio