Leandro:
Como te comente en mi post anterior, si amplias el área te vas a enfrentar a un problema
cuando el área se debe imprimir al final de la página, es decir parte del texto debe caer
al pie de la página y el resto del texto debe caer al inicio de la siguiente página.
Para dar solución al problema de imprimir campos tipo memo yo hago lo siguiente:
- Code: Select all Expand view
STATIC FUNCTION PrtArea02(oVrd)
LOCAL nLineas := 0
LOCAL nLargo := oRsFdf:Fields("FOL_ANC"):Value
LOCAL cDes := ""
LOCAL nLoop := 0
IF oRsDet:RecordCount() > 0
oRsDet:MoveFirst()
nLoop := 0
DO WHILE ! oRsDet:EOF()
nLineas := MLCOUNT(ALLTRIM(oRsDet:Fields("DET_DES"):Value),nLargo)
FOR nLoop := 1 TO nLineas
cDes := MEMOLINE(ALLTRIM(oRsDet:Fields("DET_DES"):Value),nLargo,nLoop)
IF nLoop == 1
PRINTAREA 2 OF oVrd;
ITEMIDS {201,202,203,204,205,206};
ITEMVALUES {TRANSFORM(oRsDet:Fields("DET_CTD"):Value,"@Z 99,999.999"),;
oRsDet:Fields("DET_UDM"):Value,;
oRsDet:Fields("DET_CDP"):Value,;
cDes,;
TRANSFORM(oRsDet:Fields("DET_PUN"):Value,"@Z 999,999,999.99"),;
TRANSFORM(oRsDet:Fields("DET_IMP"):Value,"@Z 999,999,999.99")}
ELSE
PRINTAREA 2 OF oVrd;
ITEMIDS {204};
ITEMVALUES {cDes}
ENDIF
IF oVRD:nNextRow > oVRD:nPageBreak
PRINTAREA 3 OF oVrd
PAGEBREAK oVRD
PrtArea01(oVrd)
ENDIF
NEXT
oRsDet:MoveNext()
ENDDO
ENDIF
RETURN(.T.)
El truco esta en seccionar el campo memo en diferentes tramos de un x tamaño, en mi
caso la longitud la defino en nLargo, de esta manera imprimo varios renglones cuidando
al llegar al fin de la página, mira el código IF oVRD:nNextRow > oVRD:nPageBreak.
Ojala que esto te sirve a apoyo, cualquier duda estoy por aquí.
Saludos