neljapäev, 1. november 2012

Isikukoodist vanus LibreOffice/OpenOffice'is

Oli tarvidus automatiseerida isikukoodide põhjal vanuste arvutamist. Kirjutasin esialgu funktsiooni Pythonis, aga LibreOffice'iga ühendamisel tekkisid teatavad raskused - õpetusi pole ja otse kontoriprogrammist redigeerida ei saa. Seega lahendasin lõpuks vanakooli Basicus asja. Olen selles küll väga roostes ja üldse pole profiprogeja, aga vähemalt pakun endapoolse lahenduse välja:



Function Vanus(a)
sajand = left(a, 1)
aasta  = right(left(a, 3), 2)
kuu = right(left(a, 5), 2)
paev = right(left(a, 7), 2)
praegu = date()
praegu_paev = right(left(praegu, 5),2)
praegu_kuu  = left(praegu, 2)
praegu_aasta = right(praegu,4)
if (sajand = "4") or (sajand = "3") then  
sajand = "19"
else: 
    sajand = "20"
End if    
synniaasta = sajand + aasta
vanus = int(praegu_aasta)-int(synniaasta)
if int(praegu_kuu) < int(kuu) then vanus = vanus - 1
if int(praegu_kuu) = int(kuu) and int(praegu_paev) < int(paev) then vanus = vanus - 1
End Function

See tuleb siis kopeerida makrode halduri kaudu Libre igasse dokumenti, kus seda funktsiooni vaja läheb.

Tabeli lahtrisse tuleb kirjutada
=vanus(isikukoodilahter)

või otse isikukood:
=vanus(38807012700)

Märkus: funktsioon toetab ainult aastatel 1900-2099 sündinud isikute isikukoode. Isikukoodi esimene number teadupärast määrab lisaks soole ka sünnisajandi. Ajaloolistes dokumentides 19. sajandil sündinud inimeste isikukoodide põhjal oleks vaja lisada kontroll isikukoodi esimeste numbrite 1 ja 2 suhtes. Nii vanade inimeste puhul praeguseks muidugi tegu möödunud ajaga sünnist, mitte vanusega. Või on keegi veel elus?

Kommentaare ei ole:

Minu blogide loend