Impressão em várias portas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Impressão em várias portas

Mensagem 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"....
evaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 27 Out 2005 23:29

Mensagem por evaldo »

Você pode fazer da seguinte forma:

SET PRINTER TO (cPorta)

onde cPorta vai receber a porta que vai imprimir.

cPorta := "LPT1"

OK
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem 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 :?)
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Mensagem por rbonotto »

Valeu !

Vou testar hoje dos dois modos.

Abraços,
conegundes
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 29 Nov 2005 15:50

Mensagem 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
Responder