GeneXus - Archivos de texto en Gx

 
Vista:

Archivos de texto en Gx

Publicado por juanse (4 intervenciones) el 24/08/2006 22:31:47
Hola

Necesito hacer luego de ejecutar unos calculos con datos de la base de datos, pueda generar un archivo de texto plano, en donde por ejemplo tengo:
ClienteId N 8
ClienteNom C 40
ClienteDeuda N 8,2

y ClienteDeuda que es Numerico debe estar alineado a izq (ultimos 2 digitos decimales) y rellenado con ceros, o sea para 820,52 será 0000082052
ClienteNom debe estar alineado a izq y rellenado con espacios.

Como puedo hacer esto?
Igualmente, al reecibir un archivo de texto, debo poder dividirlo en secciones, validar y subir a la base...pueden darme una idea...

saludos
Juanse
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

RE:Archivos de texto en Gx

Publicado por PabloF (275 intervenciones) el 24/08/2006 23:04:01
jeje, el clasico archivo de texto para una obra social....
Tu problema es que no sabes como rellenar los campos o que no sabes generar el TXT?

1) Rellenar con espacios es simple, utiliza la funcion SPACE(n).
Por ejemplo: Para rellenar el campo CLIOBSERV que tiene 15 caracteres, pero solo 5 ocupados, alineado a izquierda, tienes que hacer:

CLIOBSERV = TRIM(CLIOBSERV) + SPACE(15 - LEN(TRIM(CLIOBSERV)) ) ( al reves si lo quieres alinear a derecha)

2) Para rellenar con ceros, es un tanto mas dificil, para eso te recomiendo que el campo CLIENTEDEUDA lo conviertas primero a tipo caracter, para poder trabajar mas tranquilo.

Ahora tienes un campo &CLIENTEDEUDA de tipo texto que tiene este valor 820,52
Haz esto para llevarlo al formato que necesitas:

&TEMP = SUBSTR('0000000000000',1,len(trim(&CLIENTEDEUDA))) + str(int(CLIENTEDEUDA)) + str( (CLIENTEDEUDA - INT(CLIENTEDEUDA)) * 100))

&TEMP es la variable que tienes que enviar al TXT. Por si no se entendio esto ultimo algoritmo te guarda en temp a) ceros para completar los espacios B) la parte entera del numero c) la parte decimal.

Espero lo entiendas, sino comunicate a mi mail

Saludos, Pablo
desde CBA Argentina
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

RE:Archivos de texto en Gx

Publicado por juanse (4 intervenciones) el 25/08/2006 00:01:35
Gracias sos un Capo!!, lo voy a poner en practica hoy mismo.

Aprovecho la oportunidad para consultarte una cosita mas; cuando haces reportes en Gx, podes indicar de forma precisa donde queres que aparezca un texto determinado? te consulto porque debo imprimir un reporte en un formulario preimpreso que ya tiene los espacios para rellenar...

saludos y gracias de nuevo
juanse
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

RE:Archivos de texto en Gx

Publicado por PabloF (275 intervenciones) el 25/08/2006 14:18:14
Es todo un tema el de la impresion.
Primero: tenes que imprimir en una impresora grafica o una impresora de texto?

Es algo muy importante pues se deben usar distintos metodos, pero basicamente cuando usas formularios preimprsos lo que tienes que hacer es un print block bastante grande, donde entren (a calculo) todos los campo que quieres imprimir. Y si quieres imprimir un detalle, o sea varios articulos por ejemplo, tenes que cargarlos en un vector e imprimirlo en ese mismo print block.

Seguramente la muchachada del foro te podra ofrecer soluciones mas sencillas, yo te paso la que me funciona a mi. Si necesitas un ejemplo te lo mando por mail.

Saludos, Pablo
desde CBA Argentina
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

RE:Archivos de texto en Gx

Publicado por Juan García (53 intervenciones) el 27/08/2006 05:25:28
Respecto a la impresión en papeles preimpresos, pudieras escanear el formato como bitmap e injertarlo en el block, y sobre de este posicionar los campos a imprimir, esta no es la solución mas elegante pero facilita en algo el trabajo, al final desplazas los campos en grupo como vaya pidiendo la impresora.

saludos
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

RE:Archivos de texto en Gx

Publicado por juanse (4 intervenciones) el 28/08/2006 21:21:56
Gracias a todos por responder!!!

PabloF, en principio deberia funcionar en impresora matrriz, chorro o laser. Voy a tratar y cualquier cosa te posteo luego...

Juan, muy ingenioso el metodo, lo utilizare...

bwana, gracias por el ejemplo...

les agradezco mucho por compartir su experiencia. Son muy amables.
Saludos
Juan
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

RE:Archivos de texto en Gx

Publicado por Juan Carlos (2 intervenciones) el 18/05/2009 22:03:31
hola a todos,

de antemano gracias por la ayuda que me puedan brindar,

el tema es que requiero generar un txt partiendo de un BD, eso ya se resolvió con un procedimiento y con funciones de gx, sin enbargo al ejecurtarlo desde un web panel no hace nada,

lo tengo con java gx 9,0, corriendo en un tomcat de linux,

sl2, jk
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

RE:Archivos de texto en Gx

Publicado por nata (5 intervenciones) el 29/08/2012 21:19:18
estoy trabajando con GX y necesito al campo FacturaTotal rellenarlo de ceros en su parte izquierda, hasta completar la extension del campo que es de 12 caracteres, ya probe con esta solucion, pero no me resulta..gracias
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

RE:Archivos de texto en Gx

Publicado por Natalia (1 intervención) el 21/11/2017 11:50:06
Hola, buenas tardes, estoy queriendo saber la forma opuesta de leer un texto, pero que tiene espacios y se rellenan los espacios con ceros, existe alguna función para poder separar algunos caracteres de la cadena
ejemplo de mi texto: la linea
0000000001020209SANGUINA VALLEJOS OSCAR Oscar Sanguina VILLARRICA C/ 25 DE XII 000100020002 00202001 19950831MS000100110011000119760103200511110000000000 3 00000000000000000000000000000000 000000000000 0000000000000000
0000000002001871WIS (Wow's Int Sys) MANTENIMIENTO Maria Servin de Gonz25 DE DICIEMBRE Y F.ZARAT


este es el ejmplo y lo debo separar para luego guardarlo de forma correcta en la base de datos!!
PD: Responde a alguna función?

Desde ya muchas gracias!!
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

RE:Archivos de texto en Gx

Publicado por bwana (18 intervenciones) el 25/08/2006 21:48:57
Hay otras formas de generar un txt mediante una procedure. En Java, VB y .NET se pueden usar las Delimited Ascii File Functions que se describen en el Genexus Developer
library. Esta es una procedure de ejemplo que pasa una base de datos a un archivo de texto:

/* Genera Archivo de Intercambio
El nombre del archivo incluye 'C', Repartición, Mes, y Ejercicio
Se genera en el directorio \Comcaja\ARC\
El archivo es delimitado, campos separados por ';' y textos delimitados con '"'
Lleva un registo cabecera con el nombre de los campos
Los registros grabados se marcan como enviados
*/

&ban = DFWOpen(&nomarc,';')

&ban = DFWPTxt('SERADM')
&ban = DFWPTxt('EJERC')
&ban = DFWPTxt('MES')
&ban = DFWPTxt('NCCA')
&ban = DFWPTxt('SCCA')
&ban = DFWPTxt('TOPA')
&ban = DFWPTxt('NOPA')
&ban = DFWPTxt('AOPA')
&ban = DFWPTxt('IMPO')
&ban = DFWPTxt('FPAG')
&ban = DFWPTxt('NCHE')
&ban = DFWPTxt('CEJE')
&ban = DFWPTxt('CARG')
&ban = DFWPTxt('CONTR')
&ban = DFWPTxt('ENV')
&ban = DFWPTxt('FENV')

&ban = DFWNext()

for each order SerAdmCod, ComCajEjer, ComCajMes, ComCajNcca, ComCajScca
&ban = DFWPNum(SerAdmCod,0)
&ban = DFWPNum(ComCajEjer,0)
&ban = DFWPNum(ComCajMes,0)
&ban = DFWPNum(ComCajNcca,0)
&ban = DFWPNum(ComCajScca,0)
&ban = DFWPTxt(ComCajTopa)
&ban = DFWPNum(ComCajNopa,0)
&ban = DFWPNum(ComCajAopa,0)
&ban = DFWPNum(ComCajImpo,2)
&ban = DFWPDate(ComCajFech,"dmy",'/')
&ban = DFWPTxt(ComCajNche)
&ban = DFWPNum(ComCajCeje,0)
&ban = DFWPTxt(ComCajCcar)
&ban = DFWPTxt(ComCajCont)
&ban = DFWPTxt(ComCajEnv)
&ban = DFWPDate(ComCajFEnv,"dmy",'/')

&ban = DFWNext()

if ComCajEnv = 'N'
ComCajEnv = 'S'
ComCajFEnv = SysDate()
endif
endfor

&ban = DFWClose()
msg(concat('Se ha generado el archivo de intercambio', &Nomarc, ' '))
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

RE:Archivos de texto en Gx

Publicado por juanse (4 intervenciones) el 29/08/2006 23:57:33
Gracias a todos por responder!!!

PabloF, en principio deberia funcionar en impresora matrriz, chorro o laser. Voy a tratar y cualquier cosa te posteo luego...

Juan, muy ingenioso el metodo, lo utilizare...

bwana, gracias por el ejemplo...

les agradezco mucho por compartir su experiencia. Son muy amables.
Saludos
Juan
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

RE:Archivos de texto en Gx

Publicado por juan carlos (2 intervenciones) el 18/05/2009 22:13:48
hola bwana,

tengo un procedimiento similar y al ejecutarlo directo funciona bien, pero al invocarlo desde un web panel no anda,

te agradezco tu ayuda,

sl2, jk
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

RE:Archivos de texto en Gx

Publicado por Roxana (2 intervenciones) el 21/11/2011 15:38:57
Buenos Dias:

Necesito hacer un archivo igual pero sin retorno de carro al final. Como recien me graba el registro cuando le hago el next( que hace el retorno de carro) siempre me esta grabando el enter. Como puedo hacer?

mil gracias!

Roxana
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