
Problemas al Generar Rportes
Publicado por Guillermo (1 intervención) el 10/09/2016 18:09:58

Tengo el siguiente problema al emitir un reporte en tiempo de ejecucion. Cuando lo muestra por primera vez y teniendo mas lineas que las que permite el BODY, me muestra bien, pero cuando quiero ver alguna pagina antes de imprimir, me pone el cursor de los registros del cuerpo en el ultimo. Es decir que si la tabla a mostrar tiene 20 registros y el reporte muestra de a 10 registros, en la primer vista salen bien los 10; pero si toco para ver o adelantar una pagina, se muestra solamente el ultimo registro. Cuál es el problema porque cuando lo estoy diseñando ese detalle no aparece y lo muestra bien , pero cuando creo el ejecutable y proceso ese mecanismo no lo muestra bien, y faltan datos??
En las imagenes la tabla a mostrar tiene 13 registros. y el reporte muestra de a 5 registros. Cuando avanzo una pagina (imagen 2), muestra el ultimo que mostro en la pagina uno. No muestra el 6,7,8,9,10. Y ni hablar de la 3º pagina.
Qué es lo que me falta insertar en el codigo fuente para que esto no pase ?

el codigo que uso es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
FUNCTION EmiteReporteDEFrx(nLaSalida1,cTemporalFrx1,nAreaNuevaFrx1,cPrinterDeSalida1,xFormulario1)
LOCAL nSetReportBehavior1 ,cDevices1, cNameForm1
* -----------------------------------------------
* nLaSalida1 = 1 emite a un archivo
* nLaSalida1 = 2 emite a la impresora determinada
* nLaSalida1 = 3 muestra con vista preliminar
* cTemporalFrx1 = Archivo FRX
* nAreaNuevaFrx1 = area de trabajo del FR
* cPrinterDeSalida1 = destino de la impresion
* xFormulario1 = formulario donde lo muestro
* -----------------------------------------------
IF nLaSalida1 = 1 .or. nLaSalida1 = 2
nSetReportBehavior1 = SET("ReportBehavior")
SET PRINTER TO
SET REPORTBEHAVIOR 80
ENDIF
IF nLaSalida1 = 2
cPrinterDeSalida1 = cPATH + 'SALIDA_IMPRESORA.TXT'
ENDIF
USE (cTemporalFrx1) ALIAS 'tbfrx' IN (nAreaNuevaFrx1)
SELECT 'tbfrx'
LOCATE FOR Objtype = 1 AND Objcode = 53
IF FOUND('tbfrx')
REPLACE Tag WITH "" IN 'tbfrx'
REPLACE Tag2 WITH "" IN 'tbfrx'
cDevices1 = 'DEVICE='+cPrinterDeSalida1 +CHR(13)+CHR(10)+'OUTPUT='+cPrinterDeSalida1
replace EXPR WITH cDevices1 IN 'tbfrx'
ENDIF
USE IN 'tbfrx'
IF nLaSalida1 = 1
IF !EMPTY(cPrinterDeSalida1)
SET PRINTER TO NAME (cPrinterDeSalida1)
ENDIF
REPORT FORM (cTemporalFrx1) TO PRINTER NOCONSOLE
ENDIF
IF nLaSalida1 = 2
REPORT FORM (cTemporalFrx1) TO FILE (cPrinterDeSalida1) ASCII NOCONSOLE
ENDIF
IF nLaSalida1 = 3
cNameForm1 = xFormulario1.name
REPORT FORM (cTemporalFrx1) ENVIRONMENT NOCONSOLE NOWAIT PREVIEW IN WINDOW (cNameForm1) NODIALOG
ENDIF
IF nLaSalida1 = 1 .or. nLaSalida1 = 2
SET PRINTER TO
SET PRINT OFF
SET REPORTBEHAVIOR &nSetReportBehavior1
ENDIF
RETURN cMuroFrx1
Valora esta pregunta


0