Asignar impresora por terminal?

Asignar impresora por terminal?

Postby Armando » Sun Apr 21, 2024 4:36 am

Foreros:

Cómo o donde definen ustedes las impresoras por cada terminal?, me explico un poco más

Mi aplicación utiliza, en una red LAN, en cada terminal, dos tipos de impresoras, una laser y una para tickets

La impresora laser esta definida como pre determinada, y cuando el usuario imprima
un ticket no debe salir en la impresora pre determinada (laser), entiendo que debo tener
especificada la salida hacia la impresora de tickets, y esa es mi duda, cómo o donde la
definen ustedes, consideren que son varias terminales y cada terminal tiene físicamente
un par de impresoras, laser y tickets de diferentes marcas y modelos.

Espero haber explicado mi duda, parece que hoy mi cerebro no da más.

Saludos
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
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Asignar impresora por terminal?

Postby karinha » Sun Apr 21, 2024 4:27 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7825
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Asignar impresora por terminal?

Postby Armando » Sun Apr 21, 2024 4:58 pm

Karinha:

Gracias por la respuesta, mi necesidad es que sin intervención del usuario la impresión
salga a la impresora apropiada, si es un reporte que salga a la impresora laser pero si
es un ticket salga a la impresora de tickets, insisto, sin intervención del usuario.

Por lo anterior debo especificar, en algún lugar o por algún medio, la impresora apropiada.

Saludos
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
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Asignar impresora por terminal?

Postby paquitohm » Sun Apr 21, 2024 5:28 pm

En mi caso tengo, para cada tipo de documento, una edicion-asignacion de impresora para cada usuario
paquitohm
 
Posts: 266
Joined: Fri Jan 14, 2022 8:37 am

Re: Asignar impresora por terminal?

Postby Armando » Sun Apr 21, 2024 5:33 pm

Muchas gracias Paquito.

Es una excelente alternativa, habrá alguna otra?, solo para hacer una tormenta de ideas, no porque tu sugerencia me parezca mala.

Saludos
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
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Asignar impresora por terminal?

Postby sysctrl2 » Mon Apr 22, 2024 3:28 am

las defino en un .ini en el disco duro local
y ya :D

Code: Select all  Expand view

cToPrinterTicket := LeeIniFile("CONFIG", "PRINTER_TICKET", "C:\CONFIG\PRINTERS.INI" )
cToPrinterLaser  := LeeIniFile("CONFIG", "PRINTER_LAER", "C:\CONFIG\PRINTERS.INI" )
cToPinterCodeBar := LeeIniFile("CONFIG", "PRINTER_ZEBRA", "C:\CONFIG\PRINTERS.INI" )

SetPrintDefault( cToPrinterLaser   )
PRINTER oPrn to cToPrinterLaser

FUNCTION LeeIniFile(cSection, cVal, cFile )
   local oIni
   LOCAL cStr := ''
   INI oIni FILE cFile
      GET cStr   SECTION cSection ENTRY cVal   OF oIni DEFAULT ""
   ENDINI

RETURN ( cStr )
 
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1020
Joined: Mon Feb 05, 2007 7:15 pm

Re: Asignar impresora por terminal?

Postby karinha » Mon Apr 22, 2024 11:07 am

Armando, ¿por qué no guardas el usuario, la estación (terminal) que está usando el usuario, la serie de computadora y la impresora a usar en un *.DBF?

Tks

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7825
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Asignar impresora por terminal?

Postby Armando » Mon Apr 22, 2024 4:22 pm

Amigos del foro:

Todas las sugerencias son válidas y funcionan, tal vez me decante por usar un archivo .INI

Saludos y muchas gracias
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
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Asignar impresora por terminal?

Postby cmsoft » Mon Apr 22, 2024 8:47 pm

Armando, para poder hacer esto, si o si debes tener algo en la terminal en modo local, o bien, identificar cada terminal por, por ejemplo, su IP o nombre de equipo en una base de datos centralizada.
La idea de SysCtrol es muy buena, puedes usar un archivo INI o un DBF pero guardado en una carpeta local.
La opcion de una dbf es más fácil, porque incluso puedes hacer un modulo para modificar sobre ella.
En caso que quieras utilizar los datos almacendos en una base centralizada (ya sea DBF o MySql) puedes tener una tabla con las terminales instaladas, referenciando a ellas por el nombre del equipo, que logras obtener con la funcion GetHostName()
Las alternativas son varias
Luego en las impresiones que tienes que dirigir a una impresora determinada, haces lo que bien comenta sysctrl2 , haces PRINTER oPrn to cPrinterTicket
Mi granito de arena
User avatar
cmsoft
 
Posts: 1290
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Asignar impresora por terminal?

Postby Armando » Mon Apr 22, 2024 9:29 pm

César:

Excelente explicación y muy completa, siempre son buenas las tormentas de ideas.

Saludos
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
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Asignar impresora por terminal?

Postby russimicro » Tue Apr 23, 2024 3:50 pm

Buen dia..

Tener almacenado por cada estación los datos de las impresoras : remotas o como segundas opciones
y segun necesidad del documento a imprimir

IF cImpFac == "S"
IMPRIMIR(cFilImp,"")
else
IMPRIMIR(cFilImp,"2") ... // IMPRIMIR(cFilImp,"3")
endif

Code: Select all  Expand view


FUNCTION IMPRIMIR(cFilImp,cNroImp)

    LOCAL cNomRem := ""
     
    IF cNroImp == "3"  // REMOTA X RESTAURANTES .. COMO TERCERA IMPRESORA
       cNomRem := M->cImpRemNr3
    ENDIF

    IF cNroImp == "2"  // REMOTA X RESTAURANTES .. COMO SEGUNDA IMPRESORA
       cNomRem := M->cImpRemNr2
    ENDIF

    IF EMPTY(cNomRem)
       cNomRem := M->cImpRemNr1
    ENDIF

    IF EMPTY(cNomRem)
       cNomRem := "DEFAULT"
    ENDIF

    IF cNomRem <> "DEFAULT"
       setprintdefault()
    ENDIF  
   
    shellexecute(0,"print",cFilImp,,,.f.)
   
RETURN    
   


 
russimicro
 
Posts: 261
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Asignar impresora por terminal?

Postby Armando » Wed Apr 24, 2024 3:24 am

russmicro:

Muchas gracias por la idea.

Saludos
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
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Asignar impresora por terminal?

Postby VitalJavier » Sat Apr 27, 2024 8:06 pm

Armando, que tal.
Oye yo tengo 2 impresoras en una caja de cobro
1.- Grande para un tipo de notas
2.- Una pequeña de tickets para unos comprobantes que se dan

Asi imprimo sobre la impresora que esta por default determinada

sPrinterName := PRNGETNAME() <<= Esto lo pongo al inicio del programa para tomar la impresora por default
SetPrintDefault(sPrinterName) <<= Esto al momento de la impresión, por si pierdo en algún momento la impresora
E imprimo en hoja Grande.

Con esto, Tengo instalada una mini printer que le puse de nombre "TIKET" y sobre ella imprime
cPrint := "TICKET"
PRINT oPrn TO cPrint

Espero y te sirva.
Saludos.
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Asignar impresora por terminal?

Postby karinha » Sun Apr 28, 2024 12:12 pm

Armando,

Code: Select all  Expand view

/*
Purpose : Save and restore the current printer.
Notes   : When an application is run, the current printer always defaults to the
          Windows default printer. Here is how default to the last used printer in
          the application. Each user can have a different default printer. The printer
          name is saved in a user.ini file under the user's section.
Author  : James Bott, jbott@compuserve.com
Date    : 04/09/04 10:53:04
Language: Fivewin Harbour 2.4. Harbour 43 Alpha.
*/


#include "fivewin.ch"

// --- Test
FUNCTION Main()

   LOCAL oIni, cPrinter := "", oUser

   INI oIni FILE ".\user.ini"

   oUser := TUser():new()
   oUser:name := "James"

   // Get application default printer for oUser
   GET cPrinter section oUser:name entry "DefaultPrinter" DEFAULT prnGetName() of oIni

   msgInfo( prnGetName(), "Windows default printer is:" )

   msgInfo( cPrinter, "Application default printer from INI file is:" )

   // Set the current printer to cPrinter
   setPrinter( cPrinter )

   msgInfo( prnGetName(), "Application Current printer as set via code is:" )

   printerSetup()

   // Save current printer as default
   SET section oUser:name entry "DefaultPrinter" TO prnGetName() of oIni

RETURN NIL
// --- Set application's current printer. Returns .T. if successful.
// cPrinter must be the name of an existing print device.
FUNCTION setPrinter( cPrinter )

   LOCAL cOldPrinter := "", hDC := 0, aPrn, cText := "", lSuccess := .F.

   IF cPrinter <> prnGetName()

      cText := StrTran( GetProfString( "Devices" ), Chr( 0 ), Chr( 13 ) + Chr( 10 ) )

      aPrn  := Array( MLCount( cText, 250 ) )

      AEval( aPrn, {| v, e | aPrn[ e ] := Trim( MemoLine( cText, 250, e ) ) } )

      IF  AScan( aPrn, cPrinter ) > 0

         cOldPrinter := GetProfString( "windows", "device", "" )

         WriteProfString( "windows", "device", cPrinter )

         SysRefresh()

         PrinterInit()

         hDC := GetPrintDefault( GetActiveWindow() )

         IF hDC > 0

            lSuccess := resetDC( hDC )

         ENDIF

         SysRefresh()

         WriteProfString( "windows", "device", cOldPrinter  )

      ENDIF

   ENDIF

RETURN lSuccess
// --- User class
CLASS TUser

   DATA name
   METHOD NEW
   METHOD END virtual

ENDCLASS

METHOD new()

   ::name := ""

RETURN self

// eof
 


Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7825
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Asignar impresora por terminal?

Postby Armando » Mon Apr 29, 2024 3:41 pm

Javier, Karinha y todos los amigos que respondieron, muchas gracias.

Intentaré los ejemplos y reportaré por cual me decanto, por el momento estoy liado con otro tema.

Saludos y, reitero, muchas gracias.
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
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 44 guests