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
Impresión con TDosPrn
- juan_arroyo_t
- Posts: 196
- Joined: Fri May 15, 2009 1:25 am
- Location: Cuautitlán, Mexico
- armando.lagunas
- Posts: 346
- Joined: Mon Oct 05, 2009 3:35 pm
- Location: Curico-Chile
- Contact:
Re: Impresión con TDosPrn
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.
espero que entiendas, saludos desde Chile.
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: Select all | Expand
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
Mail: armando.lagunas@gmail.com
- juan_arroyo_t
- Posts: 196
- Joined: Fri May 15, 2009 1:25 am
- Location: Cuautitlán, Mexico
Re: Impresión con TDosPrn
Hola Armando
Te envìo un còdigo mas conciso
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
Te envìo un còdigo mas conciso
Code: Select all | Expand
//---------------------------------------------------------//
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
- Armando
- Posts: 3271
- Joined: Fri Oct 07, 2005 8:20 pm
- Location: Toluca, México
- Been thanked: 2 times
- Contact:
Re: Impresión con TDosPrn
Juan:
Será que en la función Salto() te falta un oPrn:EndPage() antes de Enc_Rep() ?
Saudos
Será que en la función Salto() te falta un oPrn:EndPage() antes de Enc_Rep() ?
Code: Select all | Expand
//---------------------------------------------------------//
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- Armando Picon
- Posts: 446
- Joined: Mon Dec 26, 2005 9:11 pm
- Location: Lima, Peru
Re: Impresión con TDosPrn
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
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com