FoxPro/Visual FoxPro - Comando no elimina espacios entre letras en DBF

 
Vista:
Imágen de perfil de Yogui

Comando no elimina espacios entre letras en DBF

Publicado por Yogui (79 intervenciones) el 27/01/2015 18:02:25
Hola a todos, tengo un DBF que está llena de espacios entre letra y letra, resulta que cuando quiero eliminar esos espacios usando la siguiente linea de código:

1
SELECT proper(SUBSTR(STRTRAN(Observ,' ',''),1,254) ) FROM MyDBFrespaldo

No elimina ningún espacio en blanco, ¿alguien tiene idea de a qué pueda deberse?



P.D: Adjunto la DBF con algunos registros
Dibujo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Comando no elimina espacios entre letras en DBF

Publicado por Saul Hernandez (728 intervenciones) el 28/01/2015 00:46:33
Hola Yogui:

Estos datos vienen de algun lugar y los tienen que imprimir ??

o esta una tabla que quieres extraer esos unicos datos ?

Si solo quieres extrar los datos por esta unica vez, Usa excel porque lo que tienen son fisicamente espacios, (no espacios de letras) no se si me explico

Me cuentas

Sha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Comando no elimina espacios entre letras en DBF

Publicado por Fidel José (558 intervenciones) el 28/01/2015 01:49:29
Yogui:
Para eliminar todos los espacios en blanco, se usa CHRTRAN(lcString , chr(32),"")
Sin embargo, en tu caso, esto no sirve. Te tiro una idea

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LcString="E N  E S P E R A  D E L   E X P E D I E N T E  5 7 5 1 0 "+CHR(13)
lcString=lcString ;
	+"S O L I C I T U D   D E   R E A F O R O   N O   P R O C E D E N T E"
 
lcString=STRTRAN(lcString,CHR(32)+CHR(32),CHR(28))
lnLines=ALINES(laCorta,lcString,1+4,CHR(13))
lcNewString=""
FOR i=1 TO lnLines
	lnSep=ALINES(laFrase,laCorta[i],1,CHR(28))
	FOR j=1 TO lnSep
		lcNewString=lcNewString+CHRTRAN(laFrase[j],CHR(32),"")+CHR(32)
	NEXT
	lcNewString = lcNewString + CHR(13)
NEXT
MESSAGEBOX(lcNewString)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Yogui

Comando no elimina espacios entre letras en DBF

Publicado por Yogui (79 intervenciones) el 28/01/2015 18:10:52
Hola a todos :)
Saul, esos datos vienen de un campo memo, que quiero exportar a excel, cuando uso el AQT sí me permite copiar tal cual el campo en excel, pero cuando lo exporto directamente por el VFP me lo copia como se ve en la imagen, lo más curioso es que en excel tampoco

Fidel, tienes razón, no sirve con el CHRTRAN :( pero cuando quiero probar tu ejemplo me sale el error "Too many arguments" sobre esta linea]:
1
lnLines=ALINES(laCorta,lcString,1+4,CHR(13))
:(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Comando no elimina espacios entre letras en DBF

Publicado por Fidel José (558 intervenciones) el 28/01/2015 23:53:47
Perdón Yogui.
No sé si estás trabajando con VFP9
Para versiones anteriores, va esta función:
Sample:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
PROCEDURE Normalize_Space
LPARAMETERS tcString
#DEFINE _DBLSPA_	CHR(32)+CHR(32)
LOCAL lcNewString , lcAnterior ,;
	lnCuenta,lcChar,i
 
lcNewString=""
lcAnterior=CHR(28)
lnCuenta=0
FOR i=1 TO LEN(tcString)
	lcChar=SUBSTR(tcString,i,1)
	IF lcAnterior+lcChar == _DBLSPA_
		lcNewString=lcNewString + IIF(lnCuenta=0,CHR(32),"")
		lnCuenta = lnCuenta + 1
		LOOP
	ELSE
		lnCuenta = 0
	ENDIF
	lcAnterior = lcChar
	lcNewString = lcNewString + IIF(lcChar=CHR(32),"",lcChar)
NEXT
#UNDEFINE _DBLSPA_
RETURN lcNewString
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar