Clipper/FiveWin - Como hago para imprimir por paginas

 
Vista:

Como hago para imprimir por paginas

Publicado por CLARA (3 intervenciones) el 07/08/2003 00:03:03
Alguien que me de una ayudita con este procedimiento ??????

Haber tengo el sgte procedimiento que me prestaron y lo he usado desde hace tiempo :

PARAMETER ARCHIVO
pmande=savescreen(10,16,17,69)
nomar:=STRTRAN( ARCHIVO,ALLTRIM( xvia )+\"\\\",\"\" )
cajita( 10,16,17,69,\"IMPRESION DE INFORMES\",\"W+/r\" )

store 1 to Pinicial
store 99999 to Pfinal
store \'P\' to destino
@ 13,20 SAY \"Pag. Inicial \" get Pinicial Pict \'99,999\'
@ 14,20 SAY \"Pag. Final \" get Pfinal Pict \'99,999\'
@ 15,20 SAY \"[P]antalla [I]mpresora [D]isco \" get destino pict \'!\'

@ 16,20 SAY \"Nombre de Archivo: \"+NOMAR COLOR \"W+/R\"
read
restscreen(10,16,17,69,pmande)

IF LASTKEY() == 27
return .f.
ENDIF
if pinicial=1 .and. pfinal = 99999
mpgsalida=\"\"
carchivo=archivo
else
bactpac := ALIAS()
MPGarchivo=gentemp()
MPGSALIDA=gentemp()
x1:={}
AADD(X1,{\"texto\",\"C\",254,0})
DBCREATE(\"&MPGarchivo\",X1)
use (mpgarchivo) new alias mpgarchivo
sele mpgarchivo
zap
append from (archivo) SDF
go top
if empty(texto)
delete
endif
MPGACTUAL=1
SET DEVICE TO PRINT
SET PRINT TO &mpgsalida
SET PRINT ON
SET CONSOLE Off

for i=1 to lastrec()
if mpgactual>=Pinicial .and. mpgactual<=pfinal
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:Como hago para imprimir por paginas

Publicado por jose revoredo (31 intervenciones) el 08/08/2003 02:56:04
No se si entiendo tu pregunta, pero tienes un codigo que haz usado para imprimir pagina por pagina un informe.. y te ha funcionado. Tu rutina no esta completa aqui.. asi que supongo que tus condiciones han variado. .. Si eso es asi talves te estes enfrentando a imprimir archivos grandes osea de mas de 64kb que no los pueden leer las funciones asociadas a campos memos o de manipulación de strings grandes. Bueno la limitacion de los metodos que haz estado usasndo es el tamaño.- 64 kb. Para superarlo debes utilizar las funciones de bajo nivel y olvidarte de las funciones de manejo de cadenas largas dadas por clipper.. osea lo que debes usar es FOPEN FCLOSE FSEEK y crearte una funcion FReadLine (me parece que hay una desarrollada en los ejemplos source del clipper). Aparte puedes simplificar tu problema si tu pagina siempre empieza con algo conocido que indique el numero de pagina por ejemplo Pág. XX (osea Pag. 01 ejmpl) dado que hay paginas que son mas pequeñas que otras.. con este truco buscas en la linea que lees si el string de tu pagina de inicio esta alli y desde alli inicias tu impresion y la acabas cuando encuentres la Pagina final mas uno... Espro haberte ayudado.. Lo que quieres no es muy facil ehh..
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:Como hago para imprimir por paginas

Publicado por Romer (1 intervención) el 20/08/2003 22:22:34
Antes que nada debes crear un ciclo...
Te explico...
primero usa una variable X, la cual va a contar el nro de pagina
prueba con esto
xyz=0
?dato principal de busqueda
do while .not. eof()
usa xyz como el contador de registro de la base en uso (te va a decir cuantas lineas caben en la hoja) tomado en cuenta el emcabezado que usas.
seek dato principal de busqueda
debes indexar la bases de datos
xyx=xyz+1
if xyz=25 (dependiendo el tamaño de papel que uses)
x=1 (primera pagina)
x=x+1
endif

set device to print
coloca lo que necesites en tu reporte
cierra el ciclo
enddo
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