Clipper/FiveWin - Clase tprint a dosprn

 
Vista:

Clase tprint a dosprn

Publicado por Omar (28 intervenciones) el 27/03/2007 15:06:09
Compañeros todos, les pido me ayuden con algo que tal vez sea muy simple y, espero puedan ayudarme, es asi: quisiera enviar un informe (segun desee el usuario) a impresora Matricial o Inyeccion de Tinta (o laser) con previa presentacion en pantalla, he probado algunas clases y cosillas que he encontrado, pero no me funciona el envio a impresoras matriciales; les pido me ayuden y en lo posible me envien algun ejemplo.

Muchas gracias por lo que puedan hacer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Clase tprint a dosprn

Publicado por Mauricio Arevalo (152 intervenciones) el 27/03/2007 20:13:34
Te envio el ejemplo de impresión de un mismo listado con salido a inyeccion o lsaer, despues a matriz y por ultimo a archivo XLS, espero te sriva

****impresion laser o inyección
PROC IMPWINPla //Catalogo Plan de Cuentas

Repo:=""
Pub:FHEHA:=Pub:Gfec ;HAIDY()
Empres:=ALLTRIM(Pub:NOMEMP)
Identi:=("Nit: "+TRANSFORM((VAL(Pub:NITEMP)),"999,999,999")+"-"+Pub:DIGEMP)
Report:="CATALAGO PLAN DE CUENTAS"
Filtro:=("Filtro: "+Pub:FILTMENS)
FecRep:="Fecha Reporte: "+Pub:HEHA+" "+TIME()+SPAC(40)+"Página: "
Archiv:=(Pub:DIRREP+"\"+ALLTRIM(Pub:GARC)+".TXT")
SELE HMAE
DBGOTOP()
IF Pub:Rsal=4
IMPXLSPla(Empres,Identi,Report,Filtro,FecRep)
ELSE
DEFINE FONT letra NAME "COURIER NEW" SIZE 0,-10
IF Pub:Rsal=1
REPORT Repo TITLE FecRep+STR(Repo:nPage,3) LEFT HEADER Empres,Identi,Report,Filtro CENTER PREVIEW FONT Letra
ELSEIF Pub:Rsal=3
REPORT Repo TO FILE (Archiv) TITLE FecRep+STR(Repo:nPage,3) LEFT HEADER Empres,Identi,Report,Filtro CENTER FONT Letra
ENDIF
COLUMN DATA SUBS(HMAE->HMCODIGO,1,10) TITLE "CODIGO"
COLUMN DATA HMAE->HMCUENTA TITLE "NOMBRE DE LA CUENTA"
COLUMN DATA HMAE->HMN TITLE "AUXILI" CENTERED
COLUMN DATA HMAE->HMX TITLE "SB-AUX" CENTERED
COLUMN DATA HMAE->HMC TITLE "COSTOS" CENTERED
COLUMN DATA HMAE->HMI TITLE "A x I " CENTERED
ENDREPORT
Repo:nTitleUpLine:=RPT_SINGLELINE
Repo:nTitleDnLine:=RPT_SINGLELINE
IF Pub:Rsal=1
Repo:Margin(0,5, RPT_LEFT, RPT_INCHES)
Repo:Margin(0.5, RPT_RIGHT, RPT_INCHES)
Repo:Margin(.45,RPT_TOP,RPT_INCHES)
Repo:Margin(.75,RPT_BOTTOM,RPT_INCHES)
ENDIF
ACTIVATE REPORT Repo WHILE !HMAE->(EOF())
Letra:END()
ENDIF
IF(Pub:Rsal=3 .OR. Pub:Rsal=4,MENSARC(),"")

******Reporte en matriz de punto

PROC IMPDOSPla //Catalogo Plan de Cuentas

Local RepDos, i, oBase, Campo1,Campo2,Campo3,Campo4,Campo5,Campo6

DataBase oBase
oBase:bEof := NIL

Pub:FHEHA:=Pub:Gfec ;HAIDY()
Empres:=ALLTRIM(Pub:NOMEMP)
Identi:=("Nit: "+TRANSFORM((VAL(Pub:NITEMP)),"999,999,999")+"-"+Pub:DIGEMP)
Report:="CATALAGO PLAN DE CUENTAS"
Filtro:=("Filtro: "+Pub:FILTMENS)
FecRep:="Fecha Reporte: "+Pub:HEHA+" "+TIME()+SPAC(32)+OemToAnsi("Página: ")

REPDOS oRepDos HEADER Empres,Identi,Report,Filtro,FecRep+STR(Pub:Pagina,4) PREVIEW CONDENSED CAPTION Pub:MimpDo

ADD COLUMN TO oRepDos TITLE "CODIGO" DATA OemToAnsi(SUBS(Campo1:=oBase:HMCODIGO,1,10)) SIZE 10
ADD COLUMN TO oRepDos TITLE "NOMBRE DE LA CUENTA" DATA OemToAnsi(Campo2:=oBase:HMCUENTA) SIZE 35
ADD COLUMN TO oRepDos TITLE "AUXILI" DATA OemToAnsi(Campo3:=oBase:HMN)+SPAC(5) SIZE 6
ADD COLUMN TO oRepDos TITLE "SB-AUX" DATA OemToAnsi(Campo4:=oBase:HMX)+SPAC(5) SIZE 6
ADD COLUMN TO oRepDos TITLE "COSTOS" DATA OemToAnsi(Campo5:=oBase:HMC)+SPAC(5) SIZE 6
ADD COLUMN TO oRepDos TITLE "A x I " DATA OemToAnsi(Campo6:=oBase:HMI)+SPAC(5) SIZE 6

oRepDos:bSkip :={||oBase:Skip()}
oRepDos:bWhile:={||!oBase:Eof()}
ACTIVATE REPDOS oRepDos
oBase:Close()
RETURN NIL

*****Envio a archivo XLS

PROC IMPXLSPla(Empres,Identi,Report,Filtro,FecRep) //Catalogo Plan de Cuentas

LOCAL oXls, aStruct, fila, k, lBold:=.f., aFont

DBCREATE("DBFXLS",{{"CODIGO ","C",10,0},{"CUENTA ","C",35,0},{"AUXILI ","C",06,0},{"SUB-AUXI","C",06,0},;
{"COSTOS ","C",06,0},{"A x i ","C",06,0}})
USE DBFXLS NEW ALIA HXLS
SELE HXLS
ARC:=Pub:DIRREP+"\"+ALLTRIM(Pub:GARC)
oXls := TXls():New(ARC+".xls",, .T. )
aStruct := DBStruct()
FOR k := 1 TO Len( aStruct )
oXls:Width( k, aStruct[ k, 3 ] * 1.2 )
NEXT
fila := 1
oXls:Say( fila+0, 02,Empres,.F.,,,,1)
oXls:Say( fila+1, 02,Identi,.F.,,,,1)
oXls:Say( fila+2, 02,Report,.F.,,,,1)
oXls:Say( fila+3, 02,FecRep,.F.,,,,1)
oXls:Say( fila+4, 02,Filtro,.F.,,,,1)
fila:=fila+6
oXls:Say( fila, 01,"CODIGO ",.F.,,,,1)
oXls:Say( fila, 02,"NOMBRE DE LA CUENTA ",.F.,,,,1)
oXls:Say( fila, 03,"AUXILIAR",.F.,,,,1)
oXls:Say( fila, 04,"SUB-AUXI",.F.,,,,1)
oXls:Say( fila, 05,"COSTOS ",.F.,,,,1)
oXls:Say( fila, 06,"A X I ",.F.,,,,1)
SELE HMAE
HMAE->( DBGoTop() )
WHILE !HMAE->( Eof() )
++fila
oXls:Say( fila, 01, HMAE->HMCODIGO,.F.,,,,0)
oXls:Say( fila, 02, HMAE->HMCUENTA,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMN,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMX,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMC,.F.,,,,0)
oXls:Say( fila, 03, HMAE->HMI,.F.,,,,0)
HMAE->( DBSkip() )
END
FILA++
oXls:End()
HXLS->(DBCLOSEAREA())
RETURN NIL

Saludos

Mauricio Arevalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clase tprint a dosprn

Publicado por Omar (28 intervenciones) el 30/03/2007 15:32:12
Mauricio, agradezco tu ayuda, y debo decir que probe lo indicado y funciona bastante bien, pero aun tengo el siguiente problema y consiste en los grupo, la clase report ofrece la posibilidad de ejecutar reportes por grupos los que me funcionan muy bien para impresion tipo windows pero, con tipo DOS no me resulta, tienes alguna idea para generar lo que te indico o tal vez enviar el mismo informe de TReport a DosPrn ?

es algo asi el informe que necesito.
========================================================
Reporte de caja del mes Octubre 2007
========================================================
Tarjeta de credito
--------------------------------------------------------------------------------------------------
Fecha Monto Titular Descto.
01/10/2007 12.000 Juanito de los palotes 15%
10/10/2007 9.000 Antonio de los rios 12%
---------------------------------------------------------------------------------------------------
Total tarjetas de credito (2) 21.000
---------------------------------------------------------------------------------------------------

Cheques
---------------------------------------------------------------------------------------------------
Fecha Monto Titular Descto.
02/10/2007 11.000 Juanito de los palotes 11%
15/10/2007 10.000 Perico de los palotes 18%
24/10/2007 6.000 Ricardo de los pepinos 17%
---------------------------------------------------------------------------------------------------
Total cheques (3) 27.000
---------------------------------------------------------------------------------------------------

Este modelo me resulta muy bien con Report, pero cuando necesito hacerlo para impresoras matriciales...fenece.

agradezco cualquier ayuda al respecto.

Omar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clase tprint a dosprn

Publicado por Mauricio Arevalo (152 intervenciones) el 30/03/2007 17:09:06
Omar:
En este casos YO construyo el reporte a una base de datos y ubico los datos como quiero que vayan a salir en la impresion y simplemente despues imprimo directamente de esa base sin hacer nada extraño.

Saludos

Mauricio Arevalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar