FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Impresi贸n con TDosPrn
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Impresi贸n con TDosPrn
Posted: Sat Nov 07, 2009 04:29 PM

Por favor necesito que me orienten

Estoy usando TDosPrn para mis reportes

Cuando visualizo el reporte noto que ya en la segunda hoja aparece la primera linea de impresi贸n una line antes y cuando lo mando a la impresora, ademas de lo anterior, la primera linea me la imprime a la izquierda

Reproduzco aqu铆 un programa donde elaboro un reporte

Si esto no es suficiente y se requiere m谩s informaci贸n, por favor hag谩nmelo saber

Saludos
M茅xico

/ ------------------------------------------------------------------
PROGRAMA : ------------------- EMIEDO.PRG
PROPOSITO : ------------------- EMISION DE ESTADOS DE CUENTA DE
DE CLIENTES SELECTIVO Y/O GENERAL
FACTURAS PENDIENTES Y/O TODAS
LLAMADO POR : ----------------- MODULO DE CONSULTAS
AUTOR : ----------------------- JUAN ARROYO
ULT. ACTUALIZACION : ---------- 06/11/09
---------------------------------------------------------------------
/

include "FiveWin.ch"

include "Inkey.ch"

STATIC cCliNum, cCliNom, cSel, lSoloPen, oPrn, cTitulo, cTitRep, ;
cTitRep2, Pagina, nLinea

FUNCTION EmiEdo()
LOCAL oDlg, oCbx, oChk, oBAce
LOCAL oGet1, oGet2
LOCAL aItems := {"Selectivo", ;
"General "}

SETKEY( VK_F2,{|| VerCli()} )

USE cfac INDEX cfaccli NEW
USE pag INDEX pagfac NEW
USE cli INDEX clinum, clinom NEW

cSel := "Selectivo"
cCliNum := SPACE(4)
cCliNom := SPACE(50)
lSoloPen := .T.

DEFINE DIALOG oDlg RESOURCE "EmiEdo"

REDEFINE COMBOBOX oCbx VAR cSel ID 101 OF oDlg ;
    ITEMS aItems

REDEFINE GET oGet1 VAR cCliNum ID 102 OF oDlg ;
    PICTURE "9999" ;
    WHEN LEFT(cSel,1) == "S" ;
    VALID IIF(GetKeyState(VK_UP),.T.,OkCli(oGet2, oDlg))

REDEFINE GET oGet2 VAR cCliNom ID 103 OF oDlg
    oGet2:Disable()

REDEFINE CHECKBOX oChk VAR lSoloPen ID 104 OF oDlg

REDEFINE BUTTON oBAce ID 105 OF oDlg ;
    ACTION ImpEdoCta(), oDlg:End()

ACTIVATE DIALOG oDlg CENTERED
    CLOSE DATABASES

RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION BuscaCli(cNomCli)
LOCAL oDlg, oLbx

cNomCli := TRIM(cNomCli)
cli->(DBSETORDER(2))
cli->(DBSEEK(cNomCli))

DEFINE DIALOG oDlg TITLE "Cat谩logo de clientes" ;
    RESOURCE "ActCli"

REDEFINE LISTBOX olbx ;
    FIELDS cli->clinum, cli->clinom, cli->agente ;
    HEAD "CLAVE", PADC("NOMBRE",35," "), "VEND" ;
    ALIAS "cli" ;
    ID 101 ;
    OF oDlg ;
    ON LEFT DBLCLICK( cCliNum := cli->clinum, oDlg:End() )  Update
    oLbx:bKeydown := {|nKey| IIF(nKey = 13,cCliNum := cli->clinum,)}
    oLbx:cToolTip := "Seleccione con doble click o con Enter"

ACTIVATE DIALOG oDlg CENTERED

RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION Enc_Rep(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)
LOCAL mcia := "SERRETECNO, S. A. DE C. V."
LOCAL mDirec1 := "RIVA PALACIO No. 86"
LOCAL mDirec2 := "TLALNEPANTLA, MEX."
nLinea := 5
oPrn:Command(oPrn:cNormal)
oPrn:Say( nLinea+00, 001, PADC(mCia,85," ") )
oPrn:Say( nLinea+01, 001, PADC(mDirec1,85," ") )
oPrn:Say( nLinea+02, 001, PADC(mDirec2,85," ") )
oPrn:Say( nLinea+05, 001, PADC("ESTADO DE CUENTA",85," ") )
oPrn:Say( nLinea+06, 001, PADC("----------------",85," ") )
oPrn:Say( nLinea+08, 068, "HOJA No. " + LTRIM(STR(Pagina,3)) )
IF LEFT(cSel,1) == "S"
oPrn:Say( nLinea+10, 001, PADC(" FACTURAS PENDIENTES ",85," ") )
ELSE
oPrn:Say( nLinea+10, 001, PADC(" TODAS LAS FACTURAS ",85," ") )
ENDIF
oPrn:Say( nLinea+14, 004, mCliNum )
oPrn:Say( nLinea+15, 004, mCliNom )
IF LEN(cCliAte) > 0
oPrn:Say( nLinea+16, 004, cCliAte )
oPrn:Say( nLinea+17, 004, cDirec )
IF LEN(cColon) > 0
oPrn:Say( nLinea+18, 004, cColon )
ELSE
oPrn:Say( nLinea+18, 004, cCiudad + ", " + cEstado + " " + cCodPos )
ENDIF
ELSE
oPrn:Say( nLinea+16, 004, cDirec )
IF LEN(cColon) > 0
oPrn:Say( nLinea+17, 004, cColon )
oPrn:Say( nLinea+18, 004, cCiudad + ", " + cEstado + " " + cCodPos )
ELSE
oPrn:Say( nLinea+17, 004, cCiudad + ", " + cEstado + " " + cCodPos )
ENDIF
ENDIF
oPrn:Say( nLinea+19, (78-LEN(DTOC(DATE()))), DTOC(DATE()) )
oPrn:Say( nLinea+20, 004, REPLICATE("-",76) )
oPrn:Say( nLinea+21, 004, "FACTURA" )
oPrn:Say( nLinea+21, 014, "FECHA" )
oPrn:Say( nLinea+21, 023, "VENCIM" )
oPrn:Say( nLinea+21, 039, "IMPORTE" )
oPrn:Say( nLinea+21, 058, "PAGO" )
oPrn:Say( nLinea+21, 064, "FECHA PAGO" )
oPrn:Say( nLinea+22, 004, REPLICATE("-",76) )
nLinea := 29
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION ImpEdoCta()

local oDlg, oBtn1, oBtn2

SET _3DLOOK ON

SetMTxtPreview( .f., 5, 2, .f., .t. )

DEFINE DIALOG oDlg FROM 5, 5 TO 18, 40 ;
TITLE "Imprime todos los moviemientos de un cliente"

@ 3, 2 BUTTON oBtn1 PROMPT "&Imprimir " OF oDlg SIZE 40,12 ;
ACTION (ImpRep( .t., oDlg), oDlg:End() )

@ 3, 12 BUTTON oBtn2 PROMPT "&Cancelar" OF oDlg SIZE 40,12 ;
ACTION oDlg:End()

ACTIVATE DIALOG oDlg CENTERED

return nil

//---------------------------------------------------------//

STATIC FUNCTION ImpRep( lModal, oDlg )
LOCAL nTImp, nTPago, nTSaldo, nTxven, nT1a30, nT31a60, nT61a90, ;
nTmas90
LOCAL mCliNum, mCliNom, cCliAte, cDirec, cColon, cCiudad, cEstado, ;
cCodPos, TotPag, SaldoFac
LOCAL cFacNum, nImpFac, dVencFac, dFechaFac

nTImp := nTPago := nTSaldo := nTxven := nT1a30 := 0
nT31a60 := nT61a90 := nTmas90 := 0
mCliNum := cCliNum
mCliNom := cCliNom
cTitulo := "*** Antiguedad de saldos de clientes"
Pagina := 1
SELECT cli
mCliNum := cli->clinum
mCliNom := TRIM(cli->clinom)
cCliAte := TRIM(cli->cliate)
cDirec  := TRIM(cli->direc)
cColon  := TRIM(cli->colon)
cCiudad := TRIM(cli->ciudad)
cEstado := TRIM(cli->estado)
cCodPos := cli->codpos

oPrn:= TDosPrn():New()

IF ! oPrn:lCancel
oPrn:StartPage()
Enc_Rep(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)

    SELECT cli                     
   DO WHILE cli->(!EOF())
   // Inicializa variables de clientes
   mCliNum := cli->clinum
        mCliNom := TRIM(cli->clinom)
        cCliAte := TRIM(cli->cliate)
        cDirec  := TRIM(cli->direc)
        cColon  := TRIM(cli->colon)
        cCiudad := TRIM(cli->ciudad)
        cEstado := TRIM(cli->estado)
        cCodPos := cli->codpos

    IF !cfac->(DBSEEK(cCliNum))
         cli->(DBSKIP())
      LOOP         
    ENDIF
     DO WHILE cfac->clinum = cCliNum
         IF cfac->tip_fac = "M"
             cfac->(DBSKIP())
              LOOP
        ENDIF
        IF cfac->estado = "C"
            cfac->(DBSKIP())
             LOOP
           ENDIF
            IF LEFT(cSel,1) == "S"
                IF cfac->impfac = cfac->pagototal
                    cfac->(DBSKIP())
                    LOOP
                ENDIF
            ENDIF

            // Inicializa variables de facturas
            cFacNum   := cfac->facnum
            dFechaFac := cfac->fechafac
            dVencFac  := cfac->vencfac
            nImpFac   := cfac->impfac

            // Imprime partidas
            oPrn:Say( nLinea, 004, cFacNum )
            oPrn:Say( nLinea, 012, DTOC(dFechaFac) )
            oPrn:Say( nLinea, 022, DTOC(dVencFac) )
            oPrn:Say( nLinea, 032, TRANSFORM(nImpFac,"999,999,999.99") )
            SELECT pag
            IF !pag->(DBSEEK(cFacNum))
            nLinea := nLinea + 1
               IF nLinea > 50
            salto(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
                            cCiudad, cEstado, cCodPos)
               ENDIF
            ENDIF            
            totpag = 0
            saldofac := 0
            DO WHILE pag->facnum = cFacNum
            oPrn:Say( nLinea, 048, TRANSFORM(pag->cantpag,"999,999,999.99") )
               oPrn:Say( nLinea, 065, DTOC(pag->fechapag) )
            TotPag := TotPag + pag->cantpag
               nLinea := nLinea + 1
            IF nLinea > 50
                salto(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
                            cCiudad, cEstado, cCodPos)
               ENDIF                  
            pag->(DBSKIP())
            ENDDO
            nTImp    := nTImp + nImpFac
            nTPago   := nTPago + totpag
            nTSaldo  := nTImp - nTPago
            saldofac := nImpFac - totpag
            DO CASE
            CASE dVencFac >= DATE()
                nTxven := nTxven + saldofac
               CASE DATE() - dVencFac <= 30
               nT1a30 := nT1a30 + saldofac
               CASE DATE() - dVencFac <= 60
            nT31a60 := nT31a60 + saldofac                   
            CASE DATE() - dVencFac <= 90
            nT61a90 := nT61a90 + saldofac
            OTHERWISE
            nTmas90 := nTmas90 + saldofac
            ENDCASE                      
          cfac->(DBSKIP())
     ENDDO

      // Imprime totales
        IF nTImp <> 0
        nLinea = nLinea + 1      
        oPrn:Say( nLinea, 032, REPLICATE("-",14) )
        oPrn:Say( nLinea, 048, REPLICATE("-",14) )
        nLinea = nLinea + 1
        oPrn:Say( nLinea, 032, TRANSFORM(nTImp,"999,999,999.99") )
        oPrn:Say( nLinea, 048, TRANSFORM(nTPago,"999,999,999.99") )
        oPrn:Say( 053, 009, "NO VENCIDO                " + ;
                     TRANSFORM(nTxven,"999,999,999.99") )
        oPrn:Say( 054, 009, " 1 A 30 DIAS DE RETRASO   " + ;
                     TRANSFORM(nT1a30, "999,999,999.99") )
        oPrn:Say( 055, 009, "31 A 60 DIAS DE RETRASO   " + ;
                     TRANSFORM(nT31a60,"999,999,999.99") )
        oPrn:Say( 056, 009, "61 A 90 DIAS DE RETRASO   " + ;
                     TRANSFORM(nT61a90,"999,999,999.99"))
        oPrn:Say( 057, 009, "MAS DE 90 DIAS DE RETRASO " + ;
                     TRANSFORM(nTmas90,"999,999,999.99") )
        oPrn:Say( 058, 035, REPLICATE("-",14) )
        oPrn:Say( 059, 009, "T O T A L : -             " + ;
                     TRANSFORM(nTSaldo,"999,999,999.99") )
        DO CASE
        CASE nTSaldo < 0
            oPrn:Say( 061, 009, "SU SALDO A FAVOR PUEDE SER " + ;
                         "ACREDITADO A FUTURAS COMPRAS" )
            CASE nTSaldo = 0
            oPrn:Say( 061, 009, "GRACIAS POR SU PRONTO PAGO" )
            CASE nTmas90 > 0
                oPrn:Say( 061, 009, "SU CUENTA ESTA SERIAMENTE ATRASADA; " + ;
                             "FAVOR DE PAGAR" )
                oPrn:Say( 062, 009, "LO MAS RAPIDAMENTE POSIBLE" )
        CASE nT61a90 > 0
            oPrn:Say( 061, 009, "SU CUENTA PRESENTA UN GRAN ATRASO; " + ;
                         "FAVOR DE ENVIARNOS"  )
                oPrn:Say( 062, 009, "SU PAGO LO MAS PRONTO POSIBLE" )
            CASE nT31a60 > 0
            oPrn:Say( 061, 009, "SU CUENTA PRESENTA UN ATRASO; " + ;
                         "FAVOR DE ENVIARNOS SU PAGO" )
            CASE nT1a30 > 0
                oPrn:Say( 061, 009, "FAVOR DE PAGAR SU CUENTA ATRASADA" )
            CASE nTxven > 0
            oPrn:Say( 061, 009, "LE AGRADECEREMOS ENVIE SU PAGO " + ;
                         "AL VENCIMIENTO" )
           ENDCASE
        nTImp := nTPago := nTSaldo := nTxven := 0
        nT1a30 := nT31a60 := nT61a90 := nTmas90 := 0
        ENDIF


       cli->(DBSKIP())
     IF LEFT(cSel,1) == "S"
         EXIT
       ENDIF
    ENDDO
IF nLinea >= 33
    EJECT
ENDIF

ENDIF
CLOSE DATABASES
oPrn:EndPage() // salta pagina
oPrn:End()

//--- Passar a Dialog como ultimo parametro.
if oPrn:lPreview
    TxtPreview( oPrn:cDevice, cTitulo, lModal,,, oPrn, oDlg, , ;
  oPrn:lModoGraf )
endif

RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION OkCli( oGet2, oDlg )
IF EMPTY(cCliNum)
MsgAlert("Introduzca un n煤mero de cliente...")
RETURN .F.
ENDIF
cli->(DBSETORDER(1))
cli->(DBSEEK(cCliNum))
cCliNom := cli->clinom
oGet2:varput(TRIM(cCliNom))
oGet2:refresh()
RETURN .T.

//---------------------------------------------------------//

STATIC FUNCTION Salto(mCliNum, mCliNom, cCliAte, cDirec, cColon, ;
cCiudad, cEstado, cCodPos)
Pagina := Pagina + 1
Enc_Rep(mCliNum, mCliNom, cCliAte, cDirec, cColon, cCiudad, ;
cEstado, cCodPos)
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION VerCli()
LOCAL oDlg, obAce, oIco
LOCAL cNomCli := SPACE(25)
LOCAL oGet
LOCAL cSay := "Nombre"

DEFINE DIALOG oDlg TITLE "Buscar cliente" RESOURCE "Buscar" OF oDlg

REDEFINE ICON oIco ID 101 OF oDlg ;
    FILENAME "find.ico"

REDEFINE GET oGet VAR cNomCli ID 103 OF oDlg ;
    PICTURE "@!"

REDEFINE BUTTON obAce ID 104 OF oDlg ;
    ACTION BuscaCli(cNomCli), oDlg:End()

ACTIVATE DIALOG oDlg CENTERED
    KEYBOARD CHR(13)
    oDlg:End()

RETURN NIL

//---------------------------------------------------------//

// FIN DE EMIEDO.PRG

Juan Arroyo
M茅xico
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: Impresi贸n con TDosPrn
Posted: Mon Nov 09, 2009 02:57 AM
hola:

quiero ayudarte, pero coloca solo el trozo de c贸digo en donde espec铆ficamente tienes el problema , al ver el c贸digo completo uno tiende a perderse en las diferentes funciones.

para orientarte un poco, al imprimir en tdosprn tienes que tener el cuidado de no pasarte en el numero de columnas por fila, si sucede esto la impresi贸n pasa a la izquierda de la siguiente linea y por ende se descuadra todo el informe.

un ejemplo :

en los totales, la columna es 65 + los 12 d铆gitos del numero, queda en la orilla derecha y encuadrada en lo que tiene que hacer, si cambio el campo que se imprime a 15 n煤meros, la impresi贸n salta a la linea siguiente y descuadra desde hay en adelante hasta el final de la impresi贸n, generalmente cuando uno utiliza campos de caracteres largos como nombres o direcciones sucede este fen贸meno.

Code (fw): Select all Collapse
      oPrn := TdosPrn():New("LPT1")
      oPrn:cFormFeed:=""
      oPrn:Command('27,67,66')  // tama帽o carta
      oPrn:StartPage()
      oPrn:Say(11,30, "FACTURA "+TRANSFORM(cFac,"########") )
      oPrn:Say(13,13, DTOC(dFec)  )
      oPrn:Say(14,13, cNom )
      oPrn:Say(14,45, cRut )
      oPrn:Say(15,13, ALLTRIM(cDir) )
      oPrn:Say(15,45, cCiu )
      oPrn:Say(16,13, cGir )
      SELECT PA03  ; DBGOTOP() ; Hincha := 20  ; tTot := 0
      DO WHILE !EOF()
         IF SUBSTR(PA03->FRUT,1,1) = cEsp
            tNet := PA03->NETO * nPre
            oPrn:Say(Hincha, 2,TRANSFORM(PA03->NETO,"@E ##,###")+"  "+PA03->FRUT+" "+PA03->NOMB+"       "+TRANSFORM(nPre,"@E #,###.##")+"     "+TRANSFORM(tNet,"@E ##,###,###"))
            tTot += tNet
            Hincha++
            xCan := TRANSFORM(PA03->NETO,"99999999.99")
            xPre := TRANSFORM(nPre      ,"99999999.99")
            xNet := TRANSFORM(tNet      ,"99999999.99")
         ENDIF
         SELECT PA03
         SKIP
      ENDDO
      Mono := 0
      oPrn:SayCmp(50,07, _Numero( (tTot * zIva )))
      oPrn:Say(50,65,TRANSFORM(tTot,"@E ####,###,###") )
      oPrn:Say(51,65,TRANSFORM(((tTot * zIva) - tTot),"@E ####,###,###") )
      oPrn:Say(52,65,TRANSFORM( Mono                 ,"@E ####,###,###") )
      oPrn:Say(53,65,TRANSFORM( (tTot * zIva)        ,"@E ####,###,###") )
      oPrn:Say(54,65,TRANSFORM(((tTot * zIva) - tTot),"@E ####,###,###") )
      oPrn:Say(55,65,TRANSFORM(tTot,"@E ####,###,###") )
      oPrn:Say(56,05," ")
      oPrn:EndPage()
      oPrn:Command('27,67,66')
      oPrn:End()




espero que entiendas, saludos desde Chile.
SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: Impresi贸n con TDosPrn
Posted: Tue Nov 10, 2009 04:49 AM
Hola Armando

Te env矛o un c貌digo mas conciso

Code (fw): Select all Collapse
//---------------------------------------------------------//

STATIC FUNCTION Enc_Rep()
聽 聽 nLinea := 5
聽 聽 oPrn:Say( nLinea+00, 004, REPLICATE("-",76) )
聽 聽 oPrn:Say( nLinea+01, 004, "FACTURA" )
聽 聽 oPrn:Say( nLinea+01, 014, "FECHA" )
聽 聽 oPrn:Say( nLinea+01, 023, "VENCIM" )
聽 聽 oPrn:Say( nLinea+01, 039, "IMPORTE" )
聽 聽 oPrn:Say( nLinea+01, 058, "PAGO" )
聽 聽 oPrn:Say( nLinea+01, 064, "FECHA PAGO" )
聽 聽 oPrn:Say( nLinea+02, 004, REPLICATE("-",76) )
聽 聽 nLinea := 9
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION ImpRep( lModal, oDlg )

oPrn:= TDosPrn():New()
IF ! oPrn:lCancel
聽 聽 oPrn:StartPage()
聽 聽 oPrn:Command(oPrn:cNormal)
聽 聽 Enc_Rep()

聽 聽 SELECT cfac
聽 聽 DO WHILE cfac->(!EOF())
聽 聽 聽 聽 // Imprime partidas
聽 聽 聽 聽 oPrn:Say( nLinea, 004, cFacNum )
聽 聽 聽 聽 oPrn:Say( nLinea, 012, DTOC(dFechaFac) )
聽 聽 聽 聽 oPrn:Say( nLinea, 022, DTOC(dVencFac) )
聽 聽 聽 聽 oPrn:Say( nLinea, 032, TRANSFORM(nImpFac,"999,999,999.99") )
聽 聽 聽 聽 nLinea := nLinea + 1
聽 聽 聽 聽 nTImp := nTImp + nImpFac
聽 聽 聽 聽 IF nLinea > 50
聽 聽 聽 聽 聽 聽 salto()
聽 聽 聽 聽 ENDIF
聽 聽 聽 聽 cfac->(DBSKIP())
聽 聽 ENDDO

聽 聽 // Imprime totales
聽 聽 IF nTImp <> 0
聽 聽 聽 聽 nLinea = nLinea + 1 
聽 聽 聽 聽 oPrn:Say( nLinea, 032, REPLICATE("-",14) )
聽 聽 聽 聽 oPrn:Say( nLinea, 048, REPLICATE("-",14) )
聽 聽 聽 聽 nLinea = nLinea + 1
聽 聽 聽 聽 oPrn:Say( nLinea, 032, TRANSFORM(nTImp,"999,999,999.99") )
聽 聽 聽 聽 oPrn:Say( nLinea, 048, TRANSFORM(nTPago,"999,999,999.99") )
聽 聽 ENDIF

聽 聽 IF nLinea >= 5
聽 聽 聽 聽 EJECT
聽 聽 ENDIF
聽 聽 CLOSE DATABASES
聽 聽 oPrn:EndPage() // salta pagina
聽 聽 oPrn:End() 

聽 聽 //--- Passar a Dialog como ultimo parametro.
聽 聽 if oPrn:lPreview
聽 聽 聽 聽 TxtPreview( oPrn:cDevice, cTitulo, lModal,,, oPrn, oDlg, , ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oPrn:lModoGraf )
聽 聽 endif

ENDIF
RETURN NIL

//---------------------------------------------------------//

STATIC FUNCTION Salto()
Pagina := Pagina + 1
Enc_Rep()
RETURN NIL

//---------------------------------------------------------//

// FIN DE MUESTRA.PRG


Entend铆 muy bien como una linea de impresi贸n si es demasiado larga, una parte se desplaza a la l铆nea siguiente , pero no es este el caso.

En el ejemplo que me env铆as s贸lo se imprime una p谩gina pero mi reporte puede contener m谩s de una, no se si alguna de mis intrucciones este fuera de lugar.

Mi reporte se imprime correctamente en la primera p谩gina pero despu茅s de 茅sta, la primera l铆nea de la segunda se imprime del lado izquierdo y una l铆nea antes que la primera l铆nea de la primera pagina

Espero darme a entender

Saludos

Juan
Juan Arroyo
M茅xico
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Impresi贸n con TDosPrn
Posted: Tue Nov 10, 2009 11:55 AM
Juan:

Ser谩 que en la funci贸n Salto() te falta un oPrn:EndPage() antes de Enc_Rep() ?

Code (fw): Select all Collapse
//---------------------------------------------------------//
STATIC FUNCTION Salto()
Pagina := Pagina + 1
oPrn:EndPage()
Enc_Rep()
RETURN NIL


Saudos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 446
Joined: Mon Dec 26, 2005 09:11 PM
Re: Impresi贸n con TDosPrn
Posted: Tue Nov 10, 2009 04:52 PM

Despu茅s de cada llamada a Salto(), debes ajustar nuevamente nLinea. para que en la pagina siguiente no haya un valor que te esta ocasionando la impresi贸n inadecuada.

FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicaci贸n via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com

Continue the discussion