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