Página 1 de 1

Impressão em várias portas

Enviado: 29 Nov 2005 00:35
por rbonotto
Me parece que é facil...mas...

Seguinte, tenho um banco de dados onde o usuario aponta: este item vai na impressora em lpt1, este na com1, este na com2, este....

A rede será novell e no programa escrevi assim:
** porta será igual a um campo chamado PORTA no DBF

WHILE !EOF()
IF ALLTRIM(porta) == "LPT1"
SET PRINTER TO LPT1
@PROW()+1,.....
ELSEIF ALLTRIM(porta )== "COM1"
SET PRINTER TO COM1
@PROW()+1,.....
ELSEIF ALLTRIM(porta) == "COM2"
SET PRINTER TO COM2
@PROW()+1,.....
ETC...
SKIP
END

Ou to numa "furada"....

Enviado: 29 Nov 2005 04:38
por evaldo
Você pode fazer da seguinte forma:

SET PRINTER TO (cPorta)

onde cPorta vai receber a porta que vai imprimir.

cPorta := "LPT1"

OK

Enviado: 29 Nov 2005 04:50
por rochinha
Amiguinho

Pode funcionar sim mas não pode esquecer do comando SET PRINTER TO para liberar a porta.

Mas no meu entender voce se daria melhor se usasse arquivos externos que receberiam tias dados e no final da rotina disparar o conteudo inteiro para cada saida.

Da forma como vc coloca se por acaso a COM1 der pau, vai atrapalhar ou travar a impressão nas portas seguintes detonando a sequencia.

Veja o exemplo:

...
Arq1 := FCREATE( "ARQUIVO1.TXT" )
Arq2 := FCREATE( "ARQUIVO2.TXT" )
Arq3 := FCREATE( "ARQUIVO3.TXT" )
DO WHILE !EOF()
IF ALLTRIM(porta) == "LPT1"
FWRITE( Arq1, M->SuaStringDeDados1 )
ELSEIF ALLTRIM(porta )== "COM1"
FWRITE( Arq2, M->SuaStringDeDados2 )
ELSEIF ALLTRIM(porta) == "COM2"
FWRITE( Arq3, M->SuaStringDeDados3 )
ENDIF
SKIP
END
FCLOSE( Arq1 )
FCLOSE( Arq2 )
FCLOSE( Arq3 )
__run( "command.com /c copy /b " + ARQUIVO1.TXT + " LPT1" )
__run( "command.com /c copy /b " + ARQUIVO2.TXT + " COM1" )
__run( "command.com /c copy /b " + ARQUIVO3.TXT + " COM2" )
...

cERTO.

@BRAÇOS :?)

Enviado: 29 Nov 2005 09:35
por rbonotto
Valeu !

Vou testar hoje dos dois modos.

Abraços,

Enviado: 29 Nov 2005 16:17
por conegundes
Estou usando um esquema igual a cinco anos, usando rede novell um loja com 4 máquinas no balcão o vendedor pode emitir n.fiscal que vai para lpt3 ou pedido que vai para lpt2.

2 das máquinas são servidores de impressão, uma para notas fiscais e outra
para pedidos

no autoexec de todas as máquinas após o login do vendedor, as portas são capturadas para a fila de impressão correspondente:

CAPTURE L=2 Q=REQUISICAO /NB /NT TI=10 /AU /NO FORMFEED
CAPTURE L=3 Q=NOTA /NB /NT TI=10 /AU /NO FORMFEED

Entre em contato ajudarei no que for possível.
João