FoxPro/Visual FoxPro - Para "xx" Justificar campo en informe

 
Vista:

Para "xx" Justificar campo en informe

Publicado por Marisela (11 intervenciones) el 27/10/2010 19:13:38
Pues no se si exista alguna forma de hacerlo directamente, yo lo pondria en un campo memo y lo leeria linea por linea con MLINE() y lo almacenaria en una matriz que luego utilizaria para mostrarlo linea por linea en el reporte todo depende de los datos a mostrar

Me podrías poner el codigo mas o menos como lo puedo hacer? porque ya probé con muchas otras opciones y no me han funcionado.
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:Para

Publicado por xx (378 intervenciones) el 27/10/2010 22:10:25
Bueno creo que este era el post original:

Hola a todos.

Oigan, tengo un problema con un campo que se imprime en un infome, tengo una variable almacena 500 caracteres y al mandarlo al informe me lo imprime mal espaciado es decir no justificado, se imprime unos renglones mas cortos que otros Ejemplo:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx( ESTE ESPACIO DEJA VACÍO Y SALTA AL SIGUIENTE RENGLON)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(AQUI TAMBIEN)
xxxxxxxxxxxxxxxxxxxx(AQUI TAMBIEN)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(AQUI TAMBIEN)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(AQUI TAMBIEN)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx(AQUI TAMBIEN)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(AQUI TAMBIEN)

Lo que necesito es ajustarlos todos al tamaño que dejo el campo en el informe este justificado.
No se si esto se pueda hacer y si se puede me podrían ayudar..
Saludos,...


Lastimosamente no posteas el contenido del texto para tener idea de que es lo que pretendes o si tu variable de 500C lo muestras en el detalle o en el pie o cabecera de tu reporte y sobre todo si lo lees de un campo memo o lo creas encadenando textos.

Aparentemente el espacio que te deja en blanco es porque en porque tu campo del reporte es mas estrecho que tu primer linea de texto o porque tu linea de texto tiene un enter antes de completar el ancho total de tu campo del reporte

Una variable texto de 500C podrias crearlo copiando un campo memo o formando texto encadenados
_str="LINEA1 XXXXXX"+CHR(13)+;
"LINEA2 XXXXXX"+CHR(13)+;
"LINEA3 XXXXXX"

postea el contenido a ver si te podemos ayudar en algo, no es necesario que tenga nombres de personas ni de organizaciones si quieres proteger tu identidad, pero seria bueno tener idea del contenido como datos de tu informe y de la estructura de tu tabla

deberias informarte tambien acerca de las fuentes monoespaciadas
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:Para xx

Publicado por Marisela (11 intervenciones) el 01/11/2010 16:41:57
Gracias pro tu respuesta. XX, mira tengo lo siguente :
-fuente Courier New Tamaño 8,
-el campo se encuentra en el Pie de pagina del reporte,
-es una variable de texto que se crea con textos encadenados
cadena=Alltrim(cadena1)+Alltrim(cadena2)+Alltrim(cadena3)Alltrim(cadena4)+..........
todos los campos de la tabla de donde obtengo la informacion son caracter

-Tambien los tengo en un campo memo y y aun asi no he podido justifacarlo
texto a justificar :

||2.0|A|25810|2010-06-24T16:00:00|1|2009|ingreso|Una sola exhibición|A 30 días|4371.00|371.00|4640.00|EGC980817DF3|Elit Grupo Comercial, S.A. de C.V.|Benito Juarez Ote|106|1|Centro|Argentina|Cd. Guadalupe|Nuevo|Argentina|67100|Benito Juarez Ote|106|Centro|Cd. Guadalupe|Cd. Guadalupe|Nuevo |Argentina|67100|EAM001231D51|ENVASADORAS DE AGUAS , S. DE R. L. DE C.V.|AVE. LA SILLA|7707|1|PARQUE INDUSTRIAL LA SILLA|GARCIA|GUADALUPE|NUEVO|ARGENTINA|67190|1.000|PIEZA|ABC-12345|ARCO PARA SEGUETA DE ALTA TENS|176.00|176.00|12345678901|2009-12-15|240|1.000|PIEZA|XYZ-67890|DOBLATUBO DE PALANCA 1/2|1696.00|1696.00|1.000|PIEZA|WED4567|CAUTÍN DE ESTACIÓN PROFESIONAL DE 50 WATTS|2499.00|2499.00|12345678901|2009-12-15|240|IVA|16.00|640.00||

Te menciono que he intenatado con SUBSTR y cn el MLINE no se como 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:Para xx

Publicado por xx (378 intervenciones) el 01/11/2010 18:50:13
*// para entender todo esto copialo exactamente como esta en un archivo creado desde el VFP con MODI COMM XXX.TXT
*// cadena y/o campo memo
cadena= "||2.0|A|25810|2010-06-24T16:00:00|1|2009|ingreso|Una sola exhibición|A 30 días|4371.00|371.00|4640.00|EGC980817DF3|Elit Grupo Comercial, S.A. de C.V.|Benito Juarez Ote|106|1|"+;
"Centro|Argentina|Cd. Guadalupe|Nuevo|Argentina|67100|Benito Juarez Ote|106|"+;
"Centro|Cd. Guadalupe|Cd. Guadalupe|Nuevo |Argentina|67100|EAM001231D51|ENVASADORAS DE AGUAS , S. DE R. L. DE C.V.|AVE. LA SILLA|7707|1|PARQUE INDUSTRIAL LA SILLA|GARCIA|GUADALUPE|NUEVO|ARGENTINA|"+;
"67190|1.000|PIEZA|ABC-12345|ARCO PARA SEGUETA DE ALTA TENS|176.00|176.00|12345678901|2009-12-15|240|1.000|PIEZA|XYZ-67890|DOBLATUBO DE PALANCA 1/2|1696.00|1696.00|1.000|PIEZA|WED4567|"+;
"CAUTÍN DE ESTACIÓN PROFESIONAL DE 50 WATTS|2499.00|2499.00|12345678901|2009-12-15|240|IVA|16.00|640.00||"

*// tienes 2 salidas: la facil al confeccionar tu cadena la separas con ENTER es decir
*// cadena=ALLTRIM(campo1)+ALLTRIM(campo2)+ALLTRIM(campoN) la reemplaces por
*// cadena=ALLTRIM(campo1)+CHR(13)+ALLTRIM(campo2)+CHR(13)+ALLTRIM(campoN) que dependiendo de que tenga campo1,campo2,campon
*// te mostrara algo asi:
*// 2.0
*// A
*// 25810
*// 2010-06-24T16:00:00
*// 1
*// 2009
*// ingreso
*// Una sola exhibición
*// A 30 días
*// 4371.00
*// 371.00
*// ... y un largo etcetera
*//
*// la dificil: si no te sirve esto o si el campo1 es compuesto
*// es decir tiene contenidas varias cadenas es decir: "||2.0|A|25810|2010-06-24T16:00:00|1|2009|ingreso|"
*// entonces lo debes de hacer unicamente con SUBSTR()
*// newcadena= SUBSTR( cadena, 3, 3 )+CHR(13)+; &&esto te extrae "2.0"
*// SUBSTR( cadena, 7, 1 )+CHR(13)+; &&esto te extrae "A"
*// SUBSTR( cadena, 9, 5 )+CHR(13)+; &&esto te extrae "25810"
*// ...
*// obs: es dificil porque debes contar caracter por caracter y contar el ancho de cada campo
*//
*// En sintesis hasta donde veo la cadena original no tiene grabado ningun <ENTER> o mejor
*// dicho CHR(13) y por ello el reporte intentara mostrarte de acuerdo a como cabe en el
*// ancho de tu caja de texto del reporte.
*//
*// Cuando insertas el CHR(13) obligas a presentar en lineas separadas el texto y por eso
*// ya te interpretara la justificacion cuando le das a la izquierda derecha o centrado sin
*// embargo si tienes una larga cadena de texto sin separar por lineas el reporte no lo puede
*// justificar.
*//
*// Quizas quieras mostrarlo varios campos antes del campo de linea es decir:
*// newcadena="||"+ SUBSTR( cadena, 3, 3 )+"|"; &&esto te extrae "2.0"
*// SUBSTR( cadena, 7, 1 )+"|"; &&esto te extrae "A"
*// SUBSTR( cadena, 9, 5 )+"||"+CHR(13)+; &&esto te extrae "25810"
*// "||"+SUBSTR( cadena,15,19 )
*// ...
*//
*// su salida seria:
*// ||2.0|A|25810||
*// ||2010-06-24T16:00:00
*//
*//
*// Me parece raro el reporte pero en fin a de ser por no saber el contenido, en fin
*// comenta como te fue!
*//
*// PD: EL MLINE() obtiene linea por linea del campo memo pero si no tiene grabado los <ENTER> o
*// CHR(13) no funcionara!
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