Favor Ayuda Urgente
Posted: Mon Dec 28, 2009 2:09 pm
Amigos:
Tengo un problema estoy con Fw ver 20, estoy usando la clase PRINT, la uso porque me permite imprimir en forma libre sobre una hoja, que tiene un encabezado tipo factura y un detalle que puede tener hasta 70 lineas de detalle, para lo cual debo obligatoriamente realizar un salto de pagina. Es aqui donde se me genera el problema, cuando imprimo 40 lineas debo realizar el salto de pagina, generando un ENDPAGE y un nuevo PAGE, al realizar esto, el programa se salta 3 o 4 lineas de detalles de la base de datos, quedandome saltado el informe.
Necesito me puedan ayudar en forma urgente.
Desde ya muchas gracias.
Aqui esta el codigo:
Print oPrint
Define Font oFont1 Name "Arial" Size 0,12 Of oPrint
Define Font oFont2 Name "Arial" Size 0,14 Of oPrint
Define Font oFont5 Name "Arial" Size 0,14 Of oPrint
Define Font oFont3 Name "Arial" Size 0,12 Of oPrint Bold UnderLine
Define Font oFont4 Name "Arial" Size 0,24 Of oPrint Bold Italic
Define Pen oPen Style 0 width 5
nVertical := oPrint:nVertRes()
nHorizontal := oPrint:nHorzRes()
nFila := Round(nVertical/60,0)
nColumna := Round(nHorizontal/80,0)
Fil=nFila
col=nColumna
Page
oPrint:Say(nFila*6,nColumna*40," Santiago, "+spac(8)+subs(a->fec_inf,1,2)+spac(11)+aMeses[val(subs(a->fec_inf,4,2))]+space(7);
+subs(a->fec_inf,7,4),oFont1)
oPrint:Say(nFila*7,nColumna*12,"Sr(a)DR(a) : "+OemToAnsi(trim(a->med_sol)),oFont2)
oPrint:Say(nFila*9,nColumna*12,"Presente ",oFont2)
oPrint:Say(nFila*11,nColumna*12,OemToAnsi(trim(a->tip_exa)),oFont2)
oPrint:Say(nFila*13,nColumna*12,OemToAnsi(trim(a->nom_pac)),oFont2)
nAvance := 15.9
Sele b
Set inde to Deinfsc
DbSeek(cFolio)
// nPosicion=20.5
nPosicion=14.5
nLinea=0
Do While (nro_bon=cFolio).and.!Eof()
nLinea=nLinea+1
nPosicion := nPosicion+1.4
oPrint:Say(nFila*nPosicion,nColumna*16,OemToAnsi(b->cod_det),oFont5)
if nLinea>29.and.(nro_bon=cFolio).and.!eof() // Control Salto de Pagina
Endpage // Termino Pagina Actual
Page //Nueva pagina
nFila:=fil
nPosicion:=6
nColumna:=col
nLinea:=0
// EN ESTA PARTE ES DONDE PIDERDO REGISTROS PARA IMPRIMIR.
endif
Sele b
DbSkip()
EndDo
nPosicion := nPosicion+3.4
EndPage
EndPrint
Tengo un problema estoy con Fw ver 20, estoy usando la clase PRINT, la uso porque me permite imprimir en forma libre sobre una hoja, que tiene un encabezado tipo factura y un detalle que puede tener hasta 70 lineas de detalle, para lo cual debo obligatoriamente realizar un salto de pagina. Es aqui donde se me genera el problema, cuando imprimo 40 lineas debo realizar el salto de pagina, generando un ENDPAGE y un nuevo PAGE, al realizar esto, el programa se salta 3 o 4 lineas de detalles de la base de datos, quedandome saltado el informe.
Necesito me puedan ayudar en forma urgente.
Desde ya muchas gracias.
Aqui esta el codigo:
Print oPrint
Define Font oFont1 Name "Arial" Size 0,12 Of oPrint
Define Font oFont2 Name "Arial" Size 0,14 Of oPrint
Define Font oFont5 Name "Arial" Size 0,14 Of oPrint
Define Font oFont3 Name "Arial" Size 0,12 Of oPrint Bold UnderLine
Define Font oFont4 Name "Arial" Size 0,24 Of oPrint Bold Italic
Define Pen oPen Style 0 width 5
nVertical := oPrint:nVertRes()
nHorizontal := oPrint:nHorzRes()
nFila := Round(nVertical/60,0)
nColumna := Round(nHorizontal/80,0)
Fil=nFila
col=nColumna
Page
oPrint:Say(nFila*6,nColumna*40," Santiago, "+spac(8)+subs(a->fec_inf,1,2)+spac(11)+aMeses[val(subs(a->fec_inf,4,2))]+space(7);
+subs(a->fec_inf,7,4),oFont1)
oPrint:Say(nFila*7,nColumna*12,"Sr(a)DR(a) : "+OemToAnsi(trim(a->med_sol)),oFont2)
oPrint:Say(nFila*9,nColumna*12,"Presente ",oFont2)
oPrint:Say(nFila*11,nColumna*12,OemToAnsi(trim(a->tip_exa)),oFont2)
oPrint:Say(nFila*13,nColumna*12,OemToAnsi(trim(a->nom_pac)),oFont2)
nAvance := 15.9
Sele b
Set inde to Deinfsc
DbSeek(cFolio)
// nPosicion=20.5
nPosicion=14.5
nLinea=0
Do While (nro_bon=cFolio).and.!Eof()
nLinea=nLinea+1
nPosicion := nPosicion+1.4
oPrint:Say(nFila*nPosicion,nColumna*16,OemToAnsi(b->cod_det),oFont5)
if nLinea>29.and.(nro_bon=cFolio).and.!eof() // Control Salto de Pagina
Endpage // Termino Pagina Actual
Page //Nueva pagina
nFila:=fil
nPosicion:=6
nColumna:=col
nLinea:=0
// EN ESTA PARTE ES DONDE PIDERDO REGISTROS PARA IMPRIMIR.
endif
Sele b
DbSkip()
EndDo
nPosicion := nPosicion+3.4
EndPage
EndPrint