NO ME FUNCIONA SET PRINTER TO GETPRINTER()

186 views
Skip to first unread message

Oscar Bonet

unread,
Mar 30, 2023, 10:05:59 AM3/30/23
to Comunidad de Visual Foxpro en Español
No me funciona el comando SET PRINTER TO GETPRINTER() 
cuando en modo de diseño ejecuto el comando set printer to getprinter() y luego ejecuto el reporte este se me queda como si la impresora por defecto de windows primara mostrandome el reporte con el tamaño de esa impresora por defecto y no la elegida.

Saben como puede corregirse esto?

utilizo VFP 9 con SPK9

Gracias pro t uatencion.
Att Oscar

Cristian Novoa

unread,
Mar 30, 2023, 10:15:25 AM3/30/23
to Comunidad de Visual Foxpro en Español
*-- 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))

Cristian Novoa

unread,
Mar 30, 2023, 10:17:22 AM3/30/23
to Comunidad de Visual Foxpro en Español
glCompilado es por si necesitas si estás ejecutando un .exe o no. En el inicio de mi aplicación, pongo lo siguiente:

PUBLIC glCompilado
SetPath(@glCompilado)   && PARA QUE FUNCIONE TANTO COMO .FXP O .EXE (fija el directorio)

integral

unread,
Mar 30, 2023, 11:19:56 AM3/30/23
to Comunidad de Visual Foxpro en Español

Buenos Días

Tal vez el siguiente link que encontré te pueda servir de ayuda.

https://groups.google.com/g/publicesvfoxpro/c/jjXG-q6K4u4/m/sak7cYPUAAAJ

Saludos,

Integral
(Lima-Perú)

Victor Espina

unread,
Mar 30, 2023, 3:16:05 PM3/30/23
to Comunidad de Visual Foxpro en Español
Puedes usar la propiedad startMode del objeto _VFP para determinar el ambiente sobre el cual estas ejecutando:

0 - IDE de VFP
1 - Ejecutable
2 - Runtime out-of-process OLE Server.
3 -  Runtime in-process OLE Server.


Victor Espina

unread,
Mar 30, 2023, 3:18:01 PM3/30/23
to Comunidad de Visual Foxpro en Español
Yo creo que tu problema tuvo mas que ver con que estabas haciendo:

SET PRINTER TO GETPRINTER()

en lugar de 

SET PRINTER TO NAME GETPRINTER()


Saludos

Victor espina
Reply all
Reply to author
Forward
0 new messages