-----Original Message-----
From: emr
Sent: Thursday, September 30, 2010 10:06 PM
To: Comunidad de Visual Foxpro en Espa�ol
Subject: [vfp] Pregunta sobre Separar Numero de Campo direccion
Hola saludos a todos
Comet� el error de no separar en el campo de la direccion de los
clientes la calle y el numero exterior e interior.
Por lo que tengo el campo direc C 120 donde estoy registrando la
calle y el numero, la pregunta es alguien ha hecho algo via c�digo
para separar la calle del numero de este campo ? o definitvamente hay
que hacer la separaci�n manualmente de uno en uno.
Nota: no hay un patron en la direccion por que se ha capturado de la
siguiente manera:
Calle Reforma No. 123
Reforma # 432
Juarez 981
Juarez numero 342
Saludos
Enrique Martinez
Puerto Vallarta, Jalisco M�xico
Ejemplo
direccion="nombre de la calle 545"
posultesp=rat(alltrim(direccion)," ")
calle=alltrim(left(direccion,posultesp))
nro=alltrim(substr(direccion,posultesp))
Y despues se podría hacer una limpieza del nombre de la calle sacando los sinonimos de
#,No, numero, etc usando la funcion strtran
Con eso la mayor parte de la direcciones y números quedarian separados
Si en cambio hay un numero y piso y departamento, se complica un poco más.
Odino Ciai
od...@datamarkets.com.ar
##################################################################
Gordon's First Law:
Si un proyecto no vale la pena hacerlo,
no vale la pena hacerlo bien.
Arnaldo Toledano
Cordoba
Argentina
*----------------------------------------------
Function CalcDirNro
*Obj.:Obtiene el numero de una direccion
*----------------------------------------------
Para Dire
Nro:=""
N:=M:=0
If (At("RUTA",CoPDirec)=0 .And. At("KM",Upper(CopDirec))=0)
Dire=""
For X=1 To 40
&& El campo direcion tiene 40 caracteres
If X > 6
&& Analizo el numero desde el caracter 6, hay nombre como 9 DE
N=Iif(N=0,0,N+1)
If Subs(CoPDirec,X,1) $ "0123456789."
N=If(N=0,1,N)
If N-1=M
Nro=Nro+Subs(CoPDirec,X,1)
++M
EndIf
Else
Dire=Dire+Subs(CoPDirec,X,1)
EndIf
Else
Dire=Dire+Subs(CoPDirec,X,1)
EndIf
EndFor
EndIf
_CoPDirec=Dire
Return Nro
----- Original Message -----
From: "emr" <emr9...@gmail.com>
To: "Comunidad de Visual Foxpro en Espa�ol"
<publice...@googlegroups.com>
Sent: Friday, October 01, 2010 2:06 AM
Subject: [vfp] Pregunta sobre Separar Numero de Campo direccion
Hola saludos a todos
Comet� el error de no separar en el campo de la direccion de los
clientes la calle y el numero exterior e interior.
Por lo que tengo el campo direc C 120 donde estoy registrando la
calle y el numero, la pregunta es alguien ha hecho algo via c�digo
para separar la calle del numero de este campo ? o definitvamente hay
que hacer la separaci�n manualmente de uno en uno.
Nota: no hay un patron en la direccion por que se ha capturado de la
siguiente manera:
Calle Reforma No. 123
Reforma # 432
Juarez 981
Juarez numero 342
Saludos
Enrique Martinez
Puerto Vallarta, Jalisco M�xico
__________ Informaci�n de ESET NOD32 Antivirus, versi�n de la base de firmas
de virus 5495 (20101001) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
__________ Informaci�n de ESET NOD32 Antivirus, versi�n de la base de firmas de virus 5495 (20101001) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
Bendiciones
* **
* Validar la Direccion
lcCalle = alltrim(tabla.Direccion)+alltrim(tabla.Direccion2)
do case
case "#"$lcCalle && Si el Numero de la calle Viene implicito dentro
de la direccion
lcNumero = alltrim(substr(lcCalle,at("#",lcCalle)+len("#")))
lcCalle = alltrim(substr(lcCalle,1,at("#",lcCalle)-1-len("#")))
case "NO."$lcCalle
lcNumero = alltrim(substr(lcCalle,at("NO.",lcCalle)+len("NO.")))
lcCalle = alltrim(substr(lcCalle,1,at("NO.",lcCalle)-1-len("NO.")))
case "NUM"$lcCalle
lcNumero = alltrim(substr(lcCalle,at("NUM",lcCalle)+len("NUM")))
lcCalle = alltrim(substr(lcCalle,1,at("NUM",lcCalle)-1-len("NUM")))
otherwise
for i = 1 to len(lcCalle)
if isdigit(substr(lcCalle,i,1))
lcNumero = alltrim(substr(lcCalle,i+1))
lcCalle = alltrim(substr(lcCalle,1,i-1))
endif
endfor
endcase
* Validar los Numeros interior y Exterior
lcNum_Int =""
lcR_Calle = proper(lcCalle)
for i = 1 to len(lcNumero)
if isalpha(substr(lcNumero,i,1))
lcNum_Int = substr(lcNumero,i)
lnPos = i-1
exit
endif
endfor
lcR_NumExt = substr(lcNumero,1,lnPos)
lcNumInt = ""
for i = 1 to len(lcNum_Int)
if isdigit(substr(lcNum_Int,i,1))
lcNumInt = lcNumInt+substr(lcNum_Int,i,1)
endif
endfor
lcR_NumInt = lcNumInt
* **
Luis