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)
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário