terça-feira, 4 de agosto de 2015

WX - Buscando endereços



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/393-buscando-enderecos/read.awp


Procedure ValidaEnderecoLogradouros(Endereco, RemoveRuaSN, OE)

OE = OE

ok is boolean = False

Pedaco, sAbreviada, sPrimeiroNome, EnderecoValido is string = ""

X, QTDESPACO, TOTAL, POS, LETRAS, REGISTROS, UltimoEspaco is int = 0

Endereco = Upper(NoSpace(Endereco))

//RETIRA AS PALAVRAS
IF RemoveRuaSN = "S" THEN
Endereco = Replace(Endereco,"RUA","")
Endereco = Replace(Endereco,"AVENIDA","")
Endereco = Replace(Endereco,"TRAVESSA","")
Endereco = Replace(Endereco,"R.","")
Endereco = Replace(Endereco,"AV.","")
Endereco = Replace(Endereco,"TV.","")
Endereco = NoSpace(Endereco)
END

SqlExecute is string = [
Select des_lograd, des_lograd_navega_mapa, des_mnemon_lograd, * from dbo.ACT263_LOGRADOURO
where 
des_lograd_navega_mapa like '%@ParteEndereco_1@%'
]

IF Endereco <> "" THEN

//Acerta o SQL
X = 1
QTDESPACO = StringCount(Endereco," ") - 1
IF QTDESPACO > 1
LOOP (QTDESPACO)
X+=1
SqlExecute += " and des_lograd_navega_mapa like '%@ParteEndereco_"+X+"@%'"
END
END

//Busca pedaços
X = 0
TOTAL = 0
POS = 0
LETRAS = 0
UltimoEspaco = 1 
TOTAL = Length(Endereco)
LOOP (TOTAL)

POS+=1

IF Endereco[[POS]] = " " THEN 
X += 1
Pedaco = NoSpace(Middle(Endereco,UltimoEspaco,POS-UltimoEspaco))
SqlExecute = Replace(SqlExecute,"@ParteEndereco_"+X+"@",Pedaco,WholeWord)
UltimoEspaco = POS 
sAbreviada += Middle(Pedaco,1,1)
IF sPrimeiroNome = "" THEN
sPrimeiroNome = Pedaco
END
END

END
//Sql montada com as palavras

//TENTATIVAS
dsQrySql is Data Source

REGISTROS = 0

ok = HExecuteSQLQuery(dsQrySql,ConnNativa,hQueryWithoutCorrection,SqlExecute)

FOR EACH dsQrySql
REGISTROS += 1
END

IF REGISTROS = 0 THEN

Info("Nao achou na primeira tentativa")

REGISTROS = 0

SqlExecute = [
Select des_lograd, des_lograd_navega_mapa, des_mnemon_lograd, * from dbo.ACT263_LOGRADOURO
WHERE des_mnemon_lograd like '%@Abreviado@%'
]

SqlExecute = Replace(SqlExecute,"@Abreviado@",sAbreviada)

ok = HExecuteSQLQuery(dsQrySql,ConnNativa,hQueryWithoutCorrection,SqlExecute)

FOR EACH dsQrySql
REGISTROS += 1
END


IF REGISTROS = 0 THEN
Info("Nao achou na segunda")

//Busca Pelo primeiro nome
REGISTROS = 0

SqlExecute = [
Select des_lograd, des_lograd_navega_mapa, des_mnemon_lograd, * from dbo.ACT263_LOGRADOURO
WHERE des_lograd_navega_mapa like '%@PrimeiroNome@%'
]

SqlExecute = Replace(SqlExecute,"@PrimeiroNome@",sPrimeiroNome)

ok = HExecuteSQLQuery(dsQrySql,ConnNativa,hQueryWithoutCorrection,SqlExecute)

FOR EACH dsQrySql
REGISTROS += 1
END

IF REGISTROS = 0 THEN
Info("Nao achou na terceira tentativa")
//Solicita para digitar novo endereço pois em 3 tentativas nao achou nada parecido
ELSE IF REGISTROS = 1
Info("Achou apenas 1 na terceira tentativa")
FOR EACH dsQrySql
Info(dsQrySql.des_lograd,dsQrySql.des_lograd_navega_mapa,dsQrySql.des_mnemon_lograd)
EnderecoValido = dsQrySql.des_lograd_navega_mapa
END
ELSE IF REGISTROS > 2
Info("Achou varios na terceira tentativa")
FOR EACH dsQrySql
Info(dsQrySql.des_lograd,dsQrySql.des_lograd_navega_mapa,dsQrySql.des_mnemon_lograd)
//Adiciona numa lista as opções encontradas
END
END

ELSE IF REGISTROS = 1
Info("Achou apenas 1 na segunda tentativa")
FOR EACH dsQrySql
Info(dsQrySql.des_lograd,dsQrySql.des_lograd_navega_mapa,dsQrySql.des_mnemon_lograd)
EnderecoValido = dsQrySql.des_lograd_navega_mapa
END
ELSE IF REGISTROS > 2
Info("Achou varios na segunda tentativa")
FOR EACH dsQrySql
Info(dsQrySql.des_lograd,dsQrySql.des_lograd_navega_mapa,dsQrySql.des_mnemon_lograd)
//Adiciona numa lista as opções encontradas
END
END

ELSE IF REGISTROS = 1
Info("Achou apenas 1 na primeira tentativa")
FOR EACH dsQrySql
Info(dsQrySql.des_lograd, dsQrySql.des_lograd_navega_mapa,dsQrySql.des_mnemon_lograd)
EnderecoValido = dsQrySql.des_lograd_navega_mapa
END
ELSE IF REGISTROS > 2
Info("Achou varios na primeira tentativa")
FOR EACH dsQrySql
Info(dsQrySql.des_lograd, dsQrySql.des_lograd_navega_mapa,dsQrySql.des_mnemon_lograd)
//Adiciona numa lista as opções encontradas
END
END


END


Info(SqlExecute)

RESULT(EnderecoValido)

Nenhum comentário:

Postar um comentário

Teste

Teste
teste