Reportes e impresión...

Buenas otra vez yo molestando, tengo un pequeño problema:
-Necesito poner en unos reportes la leyenda de : "hoja y de x" .
Donde "y" es el numero de hoja actual,
donde "x" es el numero de hojas de las que consta el reporte.
-También no se si exista una manera de mandar un archivo texto o txt a impresión directamente desde visual fox.
-Existirá una función con la que pueda recorrer un archivo txt y contar o buscar un determinado carácter.
¿Esto por qué?, bueno tengo un programa echo en clipper 5.3 y este me genera una impresión a un archivo texto, necesito ejecutar un programa en visual fox para que me imprima un encabezado compuesto por un gráfico o imagen, y después de este que imprima un reporte generado por clipper 5.3, ya que este no puede ejecutar impresiones de gráficos por estar echo en ms-dos, es por eso que necesito tu ayuda, espero que me puedas sacar de este problema, confío en ti, muchas gracias...

3 Respuestas

Respuesta
1
Lo primero: hasta donde yo se no es posible poner el numero total de hojas a imprimir, solo puede colocar el numero en la que va y que se encuentra almacenado en la variable del sistema (de fox) _pageno, solo basta con que coloque esta variable en el pie de página.
Lo segundo y tercero: cree una tabla de un solo campo con la máxima extensión en caracteres que tengan los registros del archivo plano, importe datos desde el plano con append from, ya teniéndolos en una tabla manupularlos va a ser más facil; para imprimir o para lo que sea.
Lo cuarto: teniendo los datos importados en la tabla, hacer búsqueda es sencillo puede utilizar el buscador ($) como es esto:
Ej. Locate for midato $ micampo donde midato contiene lo que ud. quiere buscar y micampo es el campo unico de la tabla de 'traspaso' que ya mencione el los puntos 2 y 3, de esta manera el locate busca y se para en el registro donde encuentre la ocurrencia. O bien puede utilizar comandos de busqueda y manipulacion como strtran y similares.
Respuesta
1
Crea un .PRG con el siguiente código:
CREATE CURSOR CUR_RENGLONES (RENGLON C(80)) && Creo una tabla de memoria para usarla en el Reporte.
CREATE CURSOR curmem (archivo m) && Creo una tabla de memoria para guardar temporalmente el archivo generado en CLIPPER.
APPEND BLANK
APPEND MEMO archivo FROM texto.txt && Guardo el archivo generado en CLIPPER en la tabla temporal.
SET MEMOWIDTH TO 80 && Establece el largo de la linea en 80 caracteres.
LINEAS=MEMLINE(archivo) && Cuento las lineas
FOR I=1 TO LINEAS
TEXTO_LINEA=MLINE(archivo,I) && Tomo una a una las lineas y las guardo en la tabla temporal del reporte
SELECT CUR_RENGLONES
APPEND BLANK
REPLACE RENGLON WITH TEXTO_LINEA
SELECT CURMEM
ENDFOR
RELEASE CURMEM
SELECT CUR_RENGLONES
GO TOP
CREA REPORT Mi_Reporte
RELEASE CUR_RENGLONES
RETURN
Atención!
Ejecuta este código y te enviará al generador de reportes. Luego, en la banda "detalle" crea un TextBox, dale doble click y escribe: CUR_RENGLONES. RENGLÓN, luego en la banda "cabecera" crea un TextBox, dale doble click y escribe: "Página: "+ALLT(STR(_PAGENO)) y si quieres puedes insertar la imagen de la que hablas.
Pulsa Ctrl+W y el reporte quedara terminado y grabado en disco.
Una vez terminado el reporte, cambia la linea:
CREA REPORT Mi_Reporte
por:
REPORT FORM Mi_Reporte PREVIEW
------------OOo-----------
Lo único que no sé es como saber la cantidad de páginas que te imprimirá el reporte.
Consultalo en Todoexpertos.com y si te contestan enviame la respuesta a: [email protected]
Suerte.
Respuesta
1
Lo que puedes hacer para imprimir un txt son dos:
* utilizar los comando clasicos de ms-dos ejecutados desde fox con el comando run.
* la otra seria subir el txt a una tabla e imrpimirlo con el reporteador.
En cuanto al búsqueda de un carácter haría lo mismo subirlo a una tabla y crear la rutina de búsqueda ya sea por carácter o su ascii.
Lo de las páginas por, por lo investigo.
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas