Generar un archivo TXT desde un campo MEMO

165 views
Skip to first unread message

Esteban Micossi

unread,
Sep 8, 2020, 2:55:01 PM9/8/20
to Comunidad de Visual Foxpro en Español
Hola Grupo

Resulta que debo generar un TXT con datos de una tabla que tiene un campo memo,
en ese campo memo se guardan los datos de los otros campos de la misma tabla
y genera datos asi '00120163756985000A2560001000.....' hasta completar los 370 caracteres y se almacenan en este campo memo creado. Hasta alli no hay problema.
Ahora debo generar un TXT con los datos de este campo memo.
Ya he intentado con COPY MEMO TO, con STRTOFILE(), el problema es
que me toma un solo registro y es el ultimo y son cerca de 120 registros
Ahora bien hice los siguiente, he creado dos campos mas adicionales
de 250 caracteres c/u y pongo 170 caracteres en uno y 200 caracteres en otro.
Tambien hasta alli no hay problema, ahora como sumo esos dos campos y los pasos al
TXT que necesito crear. 
Bueno querido grupo espero que podamos solucionar este pequeño inconveniente.
Desde ya, muchas gracias
Saludos Cordiales
Atte
E.Micossi

Omar Bellio

unread,
Sep 8, 2020, 3:33:48 PM9/8/20
to publice...@googlegroups.com

Esteban,¿en la instrucción COPY MEMO TO le pusiste COPY nombredelcampomemo MEMO TO nombre del archivo?

Porque hice una prueba sencilla y tendría que funcionar bien.

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/451d6c13-74bc-44a5-91a5-a65998605741n%40googlegroups.com.

Esteban Micossi

unread,
Sep 8, 2020, 4:23:45 PM9/8/20
to Comunidad de Visual Foxpro en Español
Hola Omar
Gracias por responder.
Si. Puse asi 
COPY MEMO reg4.txtreg4 TO d:\registro4
Me genera el archivo  registro4.txt pero del ultimo registro. O sea un solo registro y no de todos los registros memo de la tabla.
Saludos
E.Micossi

Dsan

unread,
Sep 8, 2020, 4:32:34 PM9/8/20
to publice...@googlegroups.com
Hola
Exactamente, eso es para uno a uno, si deseas crear un archivo de todos tus regitro en la tabla, tenes que armarlo..
una idea...

local lcCadena as character
select tu tabla
go top
scan
lcCadena = lcCadena  + alltrim(tutabla.tucampo) +chr(13)

endscan
***aqui  el strtofile generar tu archivo no con el campo sino con la variable local lcCadena

saludes

Zarlu

unread,
Sep 8, 2020, 4:32:41 PM9/8/20
to Comunidad de Visual Foxpro en Español
Buenas tardes Esteban Micossi!

Creo que es la función correcta de COPY MEMO.... Sólo copia el registro actual
Tendrías que hacer un recorrido de todos los registros y usar COPY MEMO con ADDITIVE
Pudiera presentarte el inconveniente que requieras los registros con retorno (chr(13)). Entonces podrías recorrer los registros, almacenarlos en una variable o en un EDIT, adicionarles CHR(13) ó CHR(10) y usar STRTOFILE()

Suerte
zarlu
Chetumal, Quintana Roo, México

Esteban Micossi

unread,
Sep 8, 2020, 5:24:53 PM9/8/20
to Comunidad de Visual Foxpro en Español
Hola a todos

Les comento

Tengo tres tablas anteriores en donde el campo que debe sumar todos las otros campos de mismo registro no tienen mas de 80 caracteres
entonces me cabe en un campo NN de 100 caracteres, entonces para estos tres casos he puesto esto y me funciono de 10

sele reg1
copy to registro1 fields reg1.txtreg1 type sdf

sele reg2
copy to registro2 fields reg2.txtreg2 type sdf

sele reg3
copy to registro3 fields reg3.txtreg3 type sdf

Con estas instruccione me toma todos los registros.

Ahora en el registo 4 todos los campos suman 370 caracteres, por eso los puse en un memo. Entonces he creado dos campos
adicionales de 250 caracteres cada uno y pongo 170 en uno y 200 en el otro.

Ahora como uno esos dos campos y los envio al TXT

Puse esto pero me lo rechaza.

copy to registro4 ALLTRIM(reg4.desglo1)+ALLTRIM(reg4.desglo2) type sdf y me dice "Command contains unrecognized phrase/Keyword"

Bueno muchachos vamos a seguir investigando.

Gracias

Saludos

E.Micossi

Esteban Micossi

unread,
Sep 8, 2020, 6:49:17 PM9/8/20
to Comunidad de Visual Foxpro en Español
Muchachos
Bueno ya lo soucione asi:

HE creado dos campos adicionales que los llame 'desglose1' y desglose2
y puse en  'dosglose1' hasta 170 caracteres y en 'dosglose2' hasta 200 caracteres que en total son los 370 caracteres
y puse esta rutina.

acumula=""
sele reg4
SCAN
acumula=acumula+ALLTRIM(reg4.desglose1)+ALLTRIM(reg4.desglose2)+CHR(13)+CHR(10)
ENDSCAN 
STRTOFILE( acumula   , "registro4.txt")

Al campo memo no de di bola por que no me sirvio

Bueno la cosa es que safe.

Amigos, agradezco todas sus sugerencias.

Les dejo cordiales saludos

Atte
Esteban Micossi

Harold Inga

unread,
Sep 8, 2020, 10:21:33 PM9/8/20
to publice...@googlegroups.com
STRTOFILE( ) (Función)
STRTOFILE(cExpression, cFileName [, lAdditive | nFlag])
Si nFlag = 1 se anexa la cadena al final del archivo, así vas acumulando.
Harold Gerardo Inga Bruz
Analista/Programador de Sistemas
Especialista en Reingenieria de Procesos, Recaudacion Tributaria y Catastro
RPM #953522915, RPC 953721757, Fijo (053)636233


Luis suescún

unread,
Sep 9, 2020, 12:18:26 AM9/9/20
to publice...@googlegroups.com
Pero tu solución deja mucho que desear, con el campo memo bien manejado tenia que funcionar, eso de tener 2 campos y ademas jugando con las limitantes de la longitud, no me suena.

Tienes muy buenas sugerencias pq pediste apoyo y terminas haciendolo a tu modo, que te puedo decir.





Omar Bellio

unread,
Sep 9, 2020, 8:23:09 AM9/9/20
to publice...@googlegroups.com

Jah jah!!! No le puedes decir nada! Yo le sugerí algo pero no le sirvió, más allá de todas las teorías, no hay que enojarse porque programa como le sirve.

Funcionó y es funcional... es todo lo que importa.

Saludos!

Reply all
Reply to author
Forward
0 new messages