cautare sute de persoane fara CNP

11 views
Skip to first unread message

Ene Toma - ORCTDB

unread,
Aug 1, 2016, 7:29:21 AM8/1/16
to ONRC IT

pentru cine are de cautat sute de persoane, in afara de cautarea sigura dupa CNP
pentru a minimiza timpul de verificare, poate sa-si creeze un program
pentru fiecare persoana se limiteaza aria de cautare dupa data nasterii (mai sigur doar dupa anul nasterii) sau dupa un sir de caractere din localitatea in care s-a nascut
din selectie, vor fi afisate persoanele al caror nume este format din aproximativ aceleasi caractere cu persoana cautata
ARSU PAULA contine 3A, 1L, 1P, 1R, 1S, 2U; la fel si PUNGA S. ADRIAN LIVIU, dar vor fi intoarse putine rezultate


HASSAN AL JAMMAL trebuie cautat, am pus in tabela mea fictiv pe HASAN AL JAMAAL

sau separat verific si fiecare cuvant din numele cautat sa fie exact in numele persoanei cu aceeasi data a nasterii

programul a returnat:

HASSAN AL JAMMAL
Nume format din aceleasi caractere: HASSAN AL JAMMAL cui 24063464
*********************************** posibile:7 valide:7
Sir cautat:HASSAN gasit in HASSAN AL JAMMAL cui 24063464
Sir cautat:JAMMAL gasit in HASSAN AL JAMMAL cui 24063464

HASAN AL JAMAAL
Nume format din aceleasi caractere: HASAN AL JAMAAL cui 0
*********************************** posibile:7 valide:4





am creat o tabela din baza cu persoanele fara CNP (2765 fara lichidatori) si am numarat caracterele pentru fiecare, cati de A, B, C etc.


dimension a(26)


select 0

use C:\RegisN\Persoane\Datn\alfabet excl

zap in alfabet

append from C:\RegisN\Persoane\Datn\rvm

replace all nume with upper(nume) in alfabet


store 0 to vnr


select alfabet

go top

scan

vnume=alltrim(nume)

vlen=len(vnume)

vnumec=chrtran(vnume,'âîăţşÂÎĂŢŞ','aiatsAIATS')

a=0

for vi=1 to vlen

vlit=substr(vnumec,vi,1)

if between(asc(vlit),65,90)

vnr=asc(vlit)-64

a(vnr)=a(vnr)+1

endif

endfor

gather from a

select alfabet

endscan






dimension a(26),b(26),cuvinte(10)


*********************PRECIZIE=0 CAUTA EXACT, = 1 cu o diferenta

vprecizie=3


select 0

use C:\RegisN\Persoane\Datn\alfabet alias cecaut

select 0

use C:\RegisN\Persoane\Datn\tunde alias undecaut


store 0 to vnr


select cecaut

scan



vdatana=datn


select undecaut

set filter to datn=vdatana

count to vnrinreg


if vnrinreg>0

select cecaut

scatter to a

store 0 to vposibil

for vi=1 to 26

if not empty(a(vi))

vposibil=vposibil+1

endif

endfor


cuvinte=' '

cnume=alltrim(nume)

vnrcuvinte=alines(cuvinte,cnume,' ')

vnr=vnr+1

\

\<<vnr>>. Nume cautat: <<cnume>> - cu aceeasi data a nasterii, <<vdatana>> : <<vnrinreg>> pers


select undecaut

go top

scan

scatter to b

valide=0

znume=alltrim(nume)

zcui=cui

\<<znume>>

for vi=1 to 26

if not empty(a(vi)) and a(vi)=b(vi)

valide=valide+1

endif

endfor

if valide+1>vposibil-vprecizie

\Nume format din aceleasi caractere: <<znume>> cui <<zcui>>

\*********************************** posibile:<<vposibil>> valide:<<valide>>

endif


for nri=1 to vnrcuvinte

if len(cuvinte(nri))>2

if atc(cuvinte(nri),znume)#0

\Sir cautat:<<cuvinte(nri)>> gasit in <<znume>> cui <<zcui>>

endif

endif

endfor


select undecaut

endscan


endif

select cecaut

endscan




alfabet.jpg
Reply all
Reply to author
Forward
0 new messages