Hola,
Lo siento, pero no funciona. No salen los datos de la dbf ni se centra bien las áreas:

Y en el method New de RptRun falla zImpresora:
METHOD New( oReport ) CLASS RptRun
::cDir := diruta()
::cDirDll := diruta()
::cDllFile := IF( ! IsWin64(), "Rpt.dll", "Rpt64.dll" )
::nPage := 0
::oReport := oReport
::cTitle := oReport:cName
//cimpresora := zzimpresora //oReport:cPrinter
cimpresora := nil
Este es el código:
Code: Select all | Expand
#include "myrpt.prg"
REQUEST DBFCDX
*-----------------
FUNCTION main()
*-----------------
LOCAL o := MyRpt():New()
LOCAL oRpt, oList
LOCAL nId := 1
//o:cDirDll := DirPrg() + '\Dll'
o:cFile := DirPrg() + '\rpt\alblist.rpt'
DbOpenAll()
//MsgGet( 'Albaran', 'Id', @nId )
oRpt := o:Run()
oRpt:cDirDat := DirPrg() + '\Pool'
oRpt:Activate()
ALB_CAB->( DbSeek( nId ) )
CLIENT->( DbSeek( ALB_CAB->ID ) )
oRpt:Data( 'id' , ALB_CAB->ID )
oRpt:Data( 'data' , ALB_CAB->data )
oRpt:Data( 'client' , CLIENT->NAME )
oRpt:Data( 'nif' , CLIENT->NIF )
oList := oRpt:GetSection( 'LIST' )
ALB_POS->( DbSeek( nId ) )
WHILE ALB_POS->ALB_ID == nId .AND. PRODUCT->( ! Eof() )
oList:Data( 'pos' , ALB_POS->ALB_POS )
oList:Data( 'prod_id' , ALB_POS->PROD_ID )
oList:Data( 'qty' , ALB_POS->QTY )
PRODUCT->( DbSeek( ALB_POS->PROD_ID ) )
oList:Data( 'prod_text', PRODUCT->TEXT )
ALB_POS->( DbSkip() )
oList:Skip()
END
oList:End()
oRpt:End()
DbClose()
RETU NIL
*--------------------------
STATIC FUNCTION DbOpenAll()
*--------------------------
USE .\DAT\PRODUCT.DBF INDEX .\DAT\PRODUCT.CDX VIA 'DBFCDX' NEW
USE .\DAT\ALB_CAB.DBF INDEX .\DAT\ALB_CAB.CDX VIA 'DBFCDX' NEW
USE .\DAT\ALB_POS.DBF INDEX .\DAT\ALB_POS.CDX VIA 'DBFCDX' NEW
USE .\DAT\CLIENT.DBF INDEX .\DAT\CLIENT.CDX VIA 'DBFCDX' NEW
RETU NIL
*------------------------
STATIC FUNCTION DbClose()
*------------------------
PRODUCT->( DbCloseArea() )
ALB_CAB->( DbCloseArea() )
ALB_POS->( DbCloseArea() )
CLIENT->( DbCloseArea() )
RETU NIL