*-- por culpa de no tener esto, la impresion salia solo en la predeterminada
USE sol_bod.frx IN 0 ALIAS cReporte
SELECT cReporte
GO TOP
REPLACE tag WITH '', tag2 WITH ''
CierraAlias("cReporte")
lcImpresoraPorDefecto = SET("PRINTER",3)
lcImpresora = GETPRINTER() && yo esto lo leo de una configuración del sistema
IF ! fija_impresora(lcImpresora)
RETURN
ENDIF
SELECT cSolBod1
REPORT FORM sol_bod TO PRINTER NOCONSOLE
SetPath() && debido a que se pierde la ruta, cuando se imprime a un archivo con writer
SET PRINTER TO NAME (lcImpresoraPorDefecto)
RETURN
*------------------------------------------------------------------------------------------------------
FUNCTION fija_impresora(tcImpresora)
tcImpresora = NVL(tcImpresora, "")
&& no debiera pasar, pero por si aca, pues complicaria el TRY/CATCH
IF EMPTY(tcImpresora)
mensaje("No hay una impresora definida.")
RETURN .F.
ENDIF
llError = .F.
TRY
SET PRINTER TO NAME (tcImpresora)
CATCH
MESSAGEBOX('No se encontró la impresora "'+tcImpresora+'".')
llError = .T.
ENDTRY
IF llError
RETURN .F.
ENDIF
RETURN .T.
*------------------------------------------------------------------------------------------------------
FUNCTION SetPath(glCompilado)
LOCAL lcSys16, ;
lcProgram
lcSys16 = SYS(16)
lcProgram = SUBSTR(lcSys16, AT(":", lcSys16) - 1)
CD LEFT(lcProgram, RAT("\", lcProgram))
*-- Si estamos ejecutando directamente CCB.PRG,
*-- usar CD para ir hasta el directorio primario
IF RIGHT(lcProgram, 3) = "FXP"
CD ..
* glCompilado = .F.
ELSE
* glCompilado = .T.
ENDIF
RETURN LEFT(lcProgram, RAT("\", lcProgram))