ok, creo que ya vi el probema. La propidad cRecordSelect contiene una instruccion SELECT-SQL que toma los datos de un DBF llamado "_prueba.dbf" que esta presente fisicamente en la ruta (y por lo tanto es abierto automaticamente al ejecutar el select), y como resultado crea un cursor (dentro de la rutina print2PDF) llamado "tcursor". En el metodo makePS esta el contenido de esta propiedad es ejecutado y, como consecuencia, se abre el archio _prueba.dbf y se crea el cursor tcursor, y el primer PDF se genera sin problemas.... pero tanto el DBF como el cursor QUEDAN ABIERTOS; cuando intentas generar el 2do PDF, se deberia estar generando un error al generar de nuevo la tabla _prueba.dbf (pues esta abierta aun), pero ese error por algna razon esta siendo obviado por lo que el codigo contina. Al invocar a GetOutput() el metodo MakePS() se vuelve a ejecutar y el SELECT podria funcionar pues _PRUEBA.DBF aun existe (solo que es el mismo usado. para el reporte anterior), pero ahora el SELECT va a fallar porque el cursor tcursor YA EXISTE, por lo que esto podria estar causando que el 2do reporte se genere en blanco pues el PS no se genera pero aun asi se invoca a MakePDF().
La solucion vendria entonces por dos lados. En tu codigo, deberias cambiar esto:
copy to oProp.AppStartPath+[Temp\] + [_prueba]
oPDF.cRecordSelect = [select * from ']+ oProp.AppStartPath+[Temp\] + [_prueba' into CURSOR tCursor]
por esto:
cCursor = "Q" + SYS(2015) + ".dbf"
copy to oProp.AppStartPath+[Temp\] + cCursor
oPDF.cRecordSelect = [select * from ']+ oProp.AppStartPath+[Temp\] + cCursor + [.dbf' into CURSOR tCursor]
y dentro del codigo de print2pdf.prg, hacer estos cambios:
1. En la definicion de la clase añadir la propiedad cDataAlias
2. En el metodo MakePS almacenar en cDataAlias el nombre del cursor creado
3. En el metodo Cleanup, cerrar el cursor creado:
Espero te funcione.
Saludos
Victor Espina