FoxPro/Visual FoxPro - Importar algunas lineas de un .TxT

   
Vista:
Imágen de perfil de Jaime

Importar algunas lineas de un .TxT

Publicado por Jaime jisoftware@hotmail.com (11 intervenciones) el 06/12/2017 11:38:51
Amigos, tengo un problema, tengo un archivo de texto y lo que quiero es extraer o importar ciertas líneas del contenido de este txt, ya que la idea es recuperar los nombres, cargos, dni, y valores de pago juntamente con el detalle de pago mismo, amigos como es que puedo hacer, ya que no tiene los valores en forma horizontal.

Este es mi correo: jisoftware@hotmail.com
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

Importar algunas lineas de un .TxT

Publicado por Fidel José (520 intervenciones) el 06/12/2017 15:41:23
Descomprimir y agregar la librería adjunta al proyecto

Luego, desde el lugar que fuere:
lcArchivo = "c:\Temp\Activos - Beneficiarios.txt"
oCust = NEWOBJECT("cust_get_benef","get_benef.vcx")
ocust.convert_benef(lcArchivo)
ocust = null
(si se omite el nombre del archivo, pedirá un archivo con getfile() )

Esto te va a dar una versión tipo xlm, bastante más fácil de leer

Ejemplo de como queda (te paso solamente un registro)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<task name="cust_get_benef">
	<file_read>C:\THEODORE\TEMP\ACTIVOS - BENEFICIARIOS.TXT</file_read>
	<timestamp>2017-12-06T00:00:00</timestamp>
	<liquid nro="00000001">
		<titular>
			<nombre>DRE LORETO</nombre>
			<legajo>LA011052</legajo>
			<comment>LA DRE LORETO(MAYNAS)</comment>
			<ruc>1005392259-516001-1</ruc>
			<periodo>MARZO - 2007  ACT/JUD                                         (1) Activo</periodo>
		</titular>
		<datos>
			<apellidos>RUBIO ROBLES</apellidos>
			<nombres>EWER</nombres>
			<fecha_nacimiento>01/01/1990</fecha_nacimiento>
			<documento_identidad>(DNI o L.E.) 05390360</documento_identidad>
			<establecimiento>CEI 170 - 9 DE OCTUBRE</establecimiento>
			<fecha_registro>
				<ingr>01/10/2005</ingr>
				<termino>30/06/2006</termino>
			</fecha_registro>
			<fecha_registro>Ingr.:01/10/2005 Termino:30/06/2006</fecha_registro>
			<tele_ahorro_cheque>CTA- 4521091679</tele_ahorro_cheque>
			<leyenda_permanente>D.VOL.</leyenda_permanente>
			<demandado>VELA JIMENEZ LUIS ANTONIO</demandado>
			<cargo>TRAB.SERV.    I</cargo>
			<tipo_servidor>ADMINISTRATIVO DE SERV. CONTRAT.</tipo_servidor>
			<niv_mag_grupo_ocup_horas>0/AE-E/40</niv_mag_grupo_ocup_horas>
			<remuneracion>
				<total>315.00</total>
				<descuento>0.00</descuento>
				<liquidado>315.00</liquidado>
			</remuneracion>
		</datos>
	</liquid>
</task>
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 Jaime

Importar algunas lineas de un .TxT

Publicado por Jaime (11 intervenciones) el 06/12/2017 16:50:58
muchas gracias amigo... lo estoy revisando.....sos un dios...!!!
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 Jaime

Importar algunas lineas de un .TxT

Publicado por Jaime jisoftware@hotmail.com (11 intervenciones) el 06/12/2017 17:51:19
amigo, como jalo ahora los registros.....si lo cambio com xml, me manda error, una ultima ayuda porfa.
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

Importar algunas lineas de un .TxT

Publicado por Fidel José (520 intervenciones) el 06/12/2017 23:56:19
Ese archivo resultante, es para trabajar con STREXTRACT.
Para la estructura de datos que tienes, necesitas saber cuál es el número de liquidación que se necesita

Le agregué una serie de cosas. El proceso remata en un cursor que tiene la siguiente estructura:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
lcCursor = "cur"+SYS(2015)
CREATE CURSOR (lcCursor) ;
	(nombre c(40),;
	legajo c(8),;
	comenta c(40),;
	ruc c(19),;
	periodo c(30),;
	apellidos c(40),;
	nombres c(40),;
	fenacim d,;
	documen c(12),;
	establec c(40),;
	ingreso d,;
	termino d,;
	telechek c(30),;
	leyenda c(30),;
	demandado c(40),;
	cargo c(30),;
	tiposrv c(40),;
	nivmag c(30),;
	remtot n(12,2),;
	remded n(12,2),;
	remliq n(12,2))

De ahí ya podes recuperar los datos que necesites.
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 Jaime

Importar algunas lineas de un .TxT

Publicado por Jaime jisoftware@hotmail.com (11 intervenciones) el 07/12/2017 12:36:25
Mi hermano todo esta estupendo.....te agradesco de antemano infinitamente...agregue algunas cosas que me piden, pues ahora quieren el detalle de los pagos, que paso que realizo y descuentos...
***PAGOS
+basica 50.00 -ipssvid 3.00
+ael25671 60.00 -responsab 37.85
+aeds081 60.00 -subcafae 430.47
+du080 60.00
+refmov 5.00
+du90 62.61
+ds21 24.38
+costvid 27.40
+bonesp 18.38
+reunifica 28.84
+igv 17.25
+du073 72.62
+du011 84.24
+du037 206.00

Pero no en todos tiene el order, en agunos por no decirte que en todos varian.
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

Importar algunas lineas de un .TxT

Publicado por Fidel José (520 intervenciones) el 07/12/2017 14:14:05
No se de que hablas, ni qué es todo ese listado.

Si los registros no tienen un elemento que los identifique no hay mucho que puedas hacer. Si cada archivo tiene una codificación arbitraria, no sirven para nada. La informática trabaja en base a normalización, de otra forma es imposible.

Un registro puede estar conenido en una línea (que es lo habitual para texto plano sin marcas) o puede consitir en una colección de lineas con un identificador de fin de registro. Por ejemplo, en el archivo "Activos - Beneficiarios.txt" que enviaste, se identifica cada registro por la línea contiene solamente UN caracter CHR(46). Por ese motivo, si estudias la rutina que genera el archivo marcado (convert_benef), verás que se usan dos cadenas: lcString y lcParte.
Este CASE da el fin de un registro, provoca que se limpie la cadena que acumula datos del registro (lcParte) y que se modifique el estado del semáforo "lNew".
1
2
3
CASE ALLTRIM(laLines[i])=="."
							lcParte = ""
							lNew = .t.
En algunos casos se necesita un examinador hexadecimal para determinar la marca de fin de registro, porque puede ser un character no visible para el editor de texto que se usa. XVI32 es un buen producto, es gratuito y bastante fácil de utilizar. Como editor de texto lo más recomendable es Notepad ++ que también es gratuito y es excelente.
http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm
https://notepad-plus-plus.org/

Las funciones más usadas para análisis de texto son:
FILETOSTR()
STRTOFILE()
ALINES()
STREXTRACT()
GETWORDNUM() Y GETWORDCOUNT()
STRTRAN()
CHRTRAN()
LEN()
LEFT()
UPPER()
LOWER()

El método PUT_TAG de la clase que te envié, facilita la escritura de cadenas tipo XML.
Para que sea un archivo xml, debería comenzar, por ejemplo
<?xml version="1.0" encoding="UTF-8"?>
y respetar la estructura de norma.

La finalidad de la construcción de un archivo intermedio tipo xml es lograr precisión ya que, si ese archivo está bien construido, sus partes son inconfundibles. Por otra parte, xml estandar no identifica el tipo de dato, por lo que eso queda a cargo del programador. Aunque se puede guardar un esquema e identificar sus valores.
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 Jaime

Importar algunas lineas de un .TxT

Publicado por Jaime jisoftware@hotmail.com (11 intervenciones) el 07/12/2017 17:30:15
Si tiene razon y mil disculpas, en este txt que le estoy adjuntado alli cada personal tiene una montos que hacen sus ingresos (+) y sus descuentos (-) y todo eso hacer un total a cobrar, esos datos es lo que me hace falta, ahora, esos datos que le menciono no tiene un orden es decir es variado segun la apotación y ingreso de cada docente.

Espero no molestarle ya que usted es la unica persona que me esta dando respuesta a mi problema, muchas gracias de antemano

Bendiciones....

Nota: se adjunta otro txt con mas detalle
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

Importar algunas lineas de un .TxT

Publicado por Fidel José (520 intervenciones) el 08/12/2017 16:04:03
Fijate si esto te sirve (el adjunto)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jaime

Importar algunas lineas de un .TxT

Publicado por Jaime (11 intervenciones) el 08/12/2017 17:10:30
excelente amigo, te agradesco infinitamente, muchisimas gracias.... estamos a tu ordenes.
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