Problemas al Imprimir un listado de varias paginas
Posted: Wed Apr 11, 2007 12:21 pm
Amigos, estoy generando un listado , pero solo me imprime la primera
pagina ò si tengo un listado largo me esta dejando de imprimir la paginas pares, adjunto parte del programa de impresion, a ver si me pueden
dar alguna idea de que estoy haciendo mal.
Gracias por su apoyo.
Daniel.
FW25 + Clip53 + Blinker6.0
nFila := 1
//------------ Carga Datos del Detalle ----------------------//
PRINT oPrn PREVIEW
IF Empty( oPrn:hDC )
MsgStop( "Printer not ready!" )
Return Nil
END IF
DEFINE FONT oFnt12C NAME "Courier" SIZE 0,-12 OF
oPrn
DEFINE FONT oFnt12CB NAME "Courier" SIZE 0,-12 BOLD OF
oPrn
DEFINE FONT oFnt10C NAME "Courier" SIZE 0,-10 OF
oPrn
DEFINE FONT oFnt08C NAME "Courier" SIZE 0,-8 OF
oPrn
DEFINE FONT oFnt10CB NAME "Courier" SIZE 0,-10 BOLD OF
oPrn
DEFINE FONT oFnt8 NAME "Arial" SIZE 0,-8 ITALIC OF oPrn
DEFINE FONT oFnt10 NAME "Arial" SIZE 0,-10 OF oPrn
DEFINE FONT oFnt10B NAME "Arial" SIZE 0,-10 BOLD OF oPrn
DEFINE FONT oFnt12 NAME "Arial" SIZE 0,-12 BOLD OF oPrn
DEFINE FONT oFnt14 NAME "Arial" SIZE 0,-14 BOLD OF oPrn
DEFINE FONT oFnt16 NAME "Arial" SIZE 0,-16 BOLD OF oPrn
DEFINE BRUSH oBrush COLOR 14671839 // gris claritillo
DEFINE PEN oPen1 WIDTH 5
nRowStep = oPrn:nVertRes() / 20 // We want 20 rows
nColStep = oPrn:nHorzRes() / 15 // We want 15 cols
//oPrn:SetPortrait()
//oPrn:SetLandscape()
PAGE
PintaCabecera( cTipo, oPrn )
nLineas := 0
If (cAlias)->( DbSeek( cTipo + cEstado ) )
WHILE !(cAlias)->( Eof() ) .and. (cAlias)->TIPO =
cTIPO
cCliente := (cAlias)->CodClient
oPrn:cmSay( nFila, 1.0, 'CLIENTE : ' + cCliente
+ ' ' + (cAlias)->Cliente , oFnt10CB )
nFila := nFila + 0.5
Store 0 to nParcialN, nParcialA, nParcialS
nLineas ++
WHILE !(cAlias)->( Eof() ) .and. (cAlias)-
>CODCLIENT = cCliente .and. (cAlias)->TIPO = cTIPO
If nLineas >= 100
oPrn:StartPage()
nFila := 1
PintaCabecera( cTipo, oPrn )
nLineas := 0
Endif
cNomMda := SearchMaestros("06",(cAlias)-
>Moneda, 4)
nParcialN := nParcialN + (cAlias)->Neto
nParcialA := nParcialA + (cAlias)->Abonos
nParcialS := nParcialS + (cAlias)->Saldo
oPrn:cmSay( nFila, 1.0, Dtoc((cAlias)-
>Fecha) , oFnt10C )
oPrn:cmSay( nFila, 3.2, (cAlias)-
>TIPO , oFnt10C )
oPrn:cmSay( nFila, 3.6, Left( (cAlias)-
>NRODOC,5) , oFnt10C )
oPrn:cmSay( nFila, 4.8, (cAlias)-
>Placa , oFnt10C )
oPrn:cmSay( nFila, 6.4,
cNomMda , oFnt10C )
oPrn:cmSay( nFila,07.1, Num2Str( (cAlias)-
>Neto ,09,2 ) , oFnt10C,,,1 )
oPrn:cmSay( nFila,09.2, Num2Str( (cAlias)-
>Abonos,09,2 ) , oFnt10C,,,1 )
oPrn:cmSay( nFila,11.4, Num2Str( (cAlias)-
>Saldo ,09,2 ) , oFnt10C,,,1 )
oPrn:cmSay( nFila,13.4, Left((cAlias)-
>Observ,43 ) , oFnt08C )
(cAlias)->( DbSkip() )
nFila := nFila + 0.5
nLineas ++
If nLineas >= 46
If (cAlias)->( Eof() )
Else
oPrn:cmSay(nFila,17.5,'-----------//-------
----', oFnt10 )
Endif
oPrn:EndPage()
nLineas := 100
End if
END WHILE
oPrn:cmSay( nFila, 1.0, 'Totales Parciales' ,
oFnt10CB,,,1)
oPrn:cmSay( nFila,07.1, Num2Str( nParcialN,
09,2 ) , oFnt10CB,,,1 )
oPrn:cmSay( nFila,09.2, Num2Str( nParcialA,
09,2 ) , oFnt10CB,,,1 )
oPrn:cmSay( nFila,11.4, Num2Str( nParcialS,
09,2 ) , oFnt10CB,,,1 )
nLineas ++
nFila := nFila + 1
nTotalN := nTotalN + nParcialN
nTotalA := nTotalA + nParcialA
nTotalS := nTotalS + nParcialS
END WHILE
oPrn:cmSay( nFila, 1.0, 'Total General' , oFnt10CB,,,1)
oPrn:cmSay( nFila,07.1, Num2Str( nTotalN, 09,2 ) ,
oFnt10CB,,,1 )
oPrn:cmSay( nFila,09.2, Num2Str( nTotalA, 09,2 ) ,
oFnt10CB,,,1 )
oPrn:cmSay( nFila,11.4, Num2Str( nTotalS, 09,2 ) ,
oFnt10CB,,,1 )
ELSE
MsgAlert( 'Informacion solicitada, no Encontrada')
END IF
ENDPAGE
ENDPRINT
SET(_SET_SOFTSEEK, lSS)
oFnt8:End()
oFnt10:End()
oFnt10B:End()
oFnt12:End()
oFnt14:End()
oFnt16:End()
(cAlias )->( DbCloseArea() )
Select( OldSele )
RETURN ( .T. )
// -------------------------------------------------------------------
-----
// Funci¢n ...: PintaCabecera
// Descripci¢n: Pinta Cabecera de la Proforma
// Parametros : aDatos -> Arreglo con Datos de Clientes
// aDatos1 -> Arreglo con Datos del Auto
// oDbfCab -> Cabecera
// oPrn -> Objeto Printer.
// Devuelve ..: Nada.
// -------------------------------------------------------------------
-----
Static Function PintaCabecera( cTipo, oPrn )
oPrn:cmSay( nFila ,5.5, "LISTADO DE DEUDAS POR COBRAR " ,
oFnt14 )
oPrn:cmSay( nFila+0.5,5.5, " AL : " + Dtoc(Date() ), oFnt14 )
nFila := nFila + 2
SubTitulo( oPrn )
Return Nil
Static Function SubTitulo( oPrn )
//-------------------------------
oPrn:cmSay( nFila,01.0, "FECHA" , oFnt10CB )
oPrn:cmSay( nFila,02.8, "NRODOC" , oFnt10CB )
oPrn:cmSay( nFila,04.8, "PLACA" , oFnt10CB )
oPrn:cmSay( nFila,06.4, "MDA" , oFnt10CB )
oPrn:cmSay( nFila,07.1, " NETO " , oFnt10CB )
oPrn:cmSay( nFila,09.2, " ABONOS " , oFnt10CB )
oPrn:cmSay( nFila,11.4, " SALDO " , oFnt10CB )
oPrn:cmSay( nFila,13.4, "OBSERVACIONES" , oFnt10CB )
nFila := nFila + 0.5
Linea(nFila, 01.0,nFila,20.0,oPrn,oPen1)
nFila := nFila + 0.5
Return Nil
pagina ò si tengo un listado largo me esta dejando de imprimir la paginas pares, adjunto parte del programa de impresion, a ver si me pueden
dar alguna idea de que estoy haciendo mal.
Gracias por su apoyo.
Daniel.
FW25 + Clip53 + Blinker6.0
nFila := 1
//------------ Carga Datos del Detalle ----------------------//
PRINT oPrn PREVIEW
IF Empty( oPrn:hDC )
MsgStop( "Printer not ready!" )
Return Nil
END IF
DEFINE FONT oFnt12C NAME "Courier" SIZE 0,-12 OF
oPrn
DEFINE FONT oFnt12CB NAME "Courier" SIZE 0,-12 BOLD OF
oPrn
DEFINE FONT oFnt10C NAME "Courier" SIZE 0,-10 OF
oPrn
DEFINE FONT oFnt08C NAME "Courier" SIZE 0,-8 OF
oPrn
DEFINE FONT oFnt10CB NAME "Courier" SIZE 0,-10 BOLD OF
oPrn
DEFINE FONT oFnt8 NAME "Arial" SIZE 0,-8 ITALIC OF oPrn
DEFINE FONT oFnt10 NAME "Arial" SIZE 0,-10 OF oPrn
DEFINE FONT oFnt10B NAME "Arial" SIZE 0,-10 BOLD OF oPrn
DEFINE FONT oFnt12 NAME "Arial" SIZE 0,-12 BOLD OF oPrn
DEFINE FONT oFnt14 NAME "Arial" SIZE 0,-14 BOLD OF oPrn
DEFINE FONT oFnt16 NAME "Arial" SIZE 0,-16 BOLD OF oPrn
DEFINE BRUSH oBrush COLOR 14671839 // gris claritillo
DEFINE PEN oPen1 WIDTH 5
nRowStep = oPrn:nVertRes() / 20 // We want 20 rows
nColStep = oPrn:nHorzRes() / 15 // We want 15 cols
//oPrn:SetPortrait()
//oPrn:SetLandscape()
PAGE
PintaCabecera( cTipo, oPrn )
nLineas := 0
If (cAlias)->( DbSeek( cTipo + cEstado ) )
WHILE !(cAlias)->( Eof() ) .and. (cAlias)->TIPO =
cTIPO
cCliente := (cAlias)->CodClient
oPrn:cmSay( nFila, 1.0, 'CLIENTE : ' + cCliente
+ ' ' + (cAlias)->Cliente , oFnt10CB )
nFila := nFila + 0.5
Store 0 to nParcialN, nParcialA, nParcialS
nLineas ++
WHILE !(cAlias)->( Eof() ) .and. (cAlias)-
>CODCLIENT = cCliente .and. (cAlias)->TIPO = cTIPO
If nLineas >= 100
oPrn:StartPage()
nFila := 1
PintaCabecera( cTipo, oPrn )
nLineas := 0
Endif
cNomMda := SearchMaestros("06",(cAlias)-
>Moneda, 4)
nParcialN := nParcialN + (cAlias)->Neto
nParcialA := nParcialA + (cAlias)->Abonos
nParcialS := nParcialS + (cAlias)->Saldo
oPrn:cmSay( nFila, 1.0, Dtoc((cAlias)-
>Fecha) , oFnt10C )
oPrn:cmSay( nFila, 3.2, (cAlias)-
>TIPO , oFnt10C )
oPrn:cmSay( nFila, 3.6, Left( (cAlias)-
>NRODOC,5) , oFnt10C )
oPrn:cmSay( nFila, 4.8, (cAlias)-
>Placa , oFnt10C )
oPrn:cmSay( nFila, 6.4,
cNomMda , oFnt10C )
oPrn:cmSay( nFila,07.1, Num2Str( (cAlias)-
>Neto ,09,2 ) , oFnt10C,,,1 )
oPrn:cmSay( nFila,09.2, Num2Str( (cAlias)-
>Abonos,09,2 ) , oFnt10C,,,1 )
oPrn:cmSay( nFila,11.4, Num2Str( (cAlias)-
>Saldo ,09,2 ) , oFnt10C,,,1 )
oPrn:cmSay( nFila,13.4, Left((cAlias)-
>Observ,43 ) , oFnt08C )
(cAlias)->( DbSkip() )
nFila := nFila + 0.5
nLineas ++
If nLineas >= 46
If (cAlias)->( Eof() )
Else
oPrn:cmSay(nFila,17.5,'-----------//-------
----', oFnt10 )
Endif
oPrn:EndPage()
nLineas := 100
End if
END WHILE
oPrn:cmSay( nFila, 1.0, 'Totales Parciales' ,
oFnt10CB,,,1)
oPrn:cmSay( nFila,07.1, Num2Str( nParcialN,
09,2 ) , oFnt10CB,,,1 )
oPrn:cmSay( nFila,09.2, Num2Str( nParcialA,
09,2 ) , oFnt10CB,,,1 )
oPrn:cmSay( nFila,11.4, Num2Str( nParcialS,
09,2 ) , oFnt10CB,,,1 )
nLineas ++
nFila := nFila + 1
nTotalN := nTotalN + nParcialN
nTotalA := nTotalA + nParcialA
nTotalS := nTotalS + nParcialS
END WHILE
oPrn:cmSay( nFila, 1.0, 'Total General' , oFnt10CB,,,1)
oPrn:cmSay( nFila,07.1, Num2Str( nTotalN, 09,2 ) ,
oFnt10CB,,,1 )
oPrn:cmSay( nFila,09.2, Num2Str( nTotalA, 09,2 ) ,
oFnt10CB,,,1 )
oPrn:cmSay( nFila,11.4, Num2Str( nTotalS, 09,2 ) ,
oFnt10CB,,,1 )
ELSE
MsgAlert( 'Informacion solicitada, no Encontrada')
END IF
ENDPAGE
ENDPRINT
SET(_SET_SOFTSEEK, lSS)
oFnt8:End()
oFnt10:End()
oFnt10B:End()
oFnt12:End()
oFnt14:End()
oFnt16:End()
(cAlias )->( DbCloseArea() )
Select( OldSele )
RETURN ( .T. )
// -------------------------------------------------------------------
-----
// Funci¢n ...: PintaCabecera
// Descripci¢n: Pinta Cabecera de la Proforma
// Parametros : aDatos -> Arreglo con Datos de Clientes
// aDatos1 -> Arreglo con Datos del Auto
// oDbfCab -> Cabecera
// oPrn -> Objeto Printer.
// Devuelve ..: Nada.
// -------------------------------------------------------------------
-----
Static Function PintaCabecera( cTipo, oPrn )
oPrn:cmSay( nFila ,5.5, "LISTADO DE DEUDAS POR COBRAR " ,
oFnt14 )
oPrn:cmSay( nFila+0.5,5.5, " AL : " + Dtoc(Date() ), oFnt14 )
nFila := nFila + 2
SubTitulo( oPrn )
Return Nil
Static Function SubTitulo( oPrn )
//-------------------------------
oPrn:cmSay( nFila,01.0, "FECHA" , oFnt10CB )
oPrn:cmSay( nFila,02.8, "NRODOC" , oFnt10CB )
oPrn:cmSay( nFila,04.8, "PLACA" , oFnt10CB )
oPrn:cmSay( nFila,06.4, "MDA" , oFnt10CB )
oPrn:cmSay( nFila,07.1, " NETO " , oFnt10CB )
oPrn:cmSay( nFila,09.2, " ABONOS " , oFnt10CB )
oPrn:cmSay( nFila,11.4, " SALDO " , oFnt10CB )
oPrn:cmSay( nFila,13.4, "OBSERVACIONES" , oFnt10CB )
nFila := nFila + 0.5
Linea(nFila, 01.0,nFila,20.0,oPrn,oPen1)
nFila := nFila + 0.5
Return Nil