Página 1 de 1
CAPTURE X NET USE
Enviado: 15 Set 2006 15:56
por cardoso
Pessoal,
Graça e Paz!
Um cliente meu trocou a rede Novell por Windows 2000.
Nosso programa em Clipper permitia que o operador selecionasse uma das impressoras da fila de impressão e então rodava o comando:
RUN CAPTURE XXXXXX
e o relatório ia corretamente para a estação onde estava a impressora que escolhemos.
Mas no WINDOWS está dando problema, pois estamos utilizando o NET USE do MSDOS.
O problema é o seguinte: Imaginem a seguinte situação:
Temos 3 estações: EA,EB,EC
Temos 3 impressoras: PA,PB,PC cada uma num micro.
Todas compartilhadas, todas na LPT1
Um operador se loga na estação [EA] e quer enviar um relatório para a a impressora da estação estação [EB]. Então o comando é: RUN NET USE LPT1 \\EB\PB. Pronto! Lá vai o relatório certinho. Todavia se neste exato momento, um operador da [EC] enviar um relatório para a [PA], advinhem onde vai imprimir? Vai imprimir na [PB] também pois a LPT1 da [PA] acabou de ser trocado para \\EB\PB.
Eu até que estou fazendo um NET USE LPT1 /DELETE após cada relatório, todavia pode ser que o operador envie um relatório antes deste comando, assim surge o problema.
Alguém já passou por isto e tem como me ajudar?
Valmir
Mudando de impressora na rede
Enviado: 15 Set 2006 17:18
por Pablo César
Colega Cardoso,
Eu acostumo chamar meu sistema através de um arquivo DE LOTE (.BAT) e você poderia colocar antes de chamar o programa o NET USE LPT1: \\SERVIDOR\IMPRESSORA_2 /YES na segunda linha chame seu programa e na terceira linha NET USE LPT1: \\SERVIDOR\IMPRESSORA_1 /YES, mas se esta opção não te serve, porque digamos que o seu sistema uma hora pode imprimir aqui, outra lá, e assim.... Bem daí entã, eu diria, que fizesse um menu de impressoras, que o usuário antes de mandar a imprimir escolha em qual das impressoras ele vai mandar. Ahh, um detalhe muito importante: sugiro você SEMPRE cria seu arquivo de impressão, ele poderá ser útil, para re-imprimir relatorio (sem ter que pocessa-lo novamente) e/ou envia-lo via WAPI (digamos). WAPI, é um aplicativo recentemente criado pelo MALIGNO. Nesse seu menu, digamos que é feito de acordo um DBF onde você guarda os nomes das impressoras, comandos, e o caminho. Acho que todo este procedimento, deveria ser padrão para TODOS nós.
Um clip-abraço, espero ter te ajudado :)Pos
Re: Mudando de impressora na rede
Enviado: 15 Set 2006 23:39
por cardoso
Pablo César escreveu:Colega Cardoso,
Eu acostumo chamar meu sistema através de um arquivo DE LOTE (.BAT) e você poderia colocar antes de chamar o programa o NET USE LPT1: \\SERVIDOR\IMPRESSORA_2 /YES na segunda linha chame seu programa e na terceira linha NET USE LPT1: \\SERVIDOR\IMPRESSORA_1 /YES, mas se esta opção não te serve, porque digamos que o seu sistema uma hora pode imprimir aqui, outra lá, e assim.... Bem daí entã, eu diria, que fizesse um menu de impressoras, que o usuário antes de mandar a imprimir escolha em qual das impressoras ele vai mandar. Ahh, um detalhe muito importante: sugiro você SEMPRE cria seu arquivo de impressão, ele poderá ser útil, para re-imprimir relatorio (sem ter que pocessa-lo novamente) e/ou envia-lo via WAPI (digamos). WAPI, é um aplicativo recentemente criado pelo MALIGNO. Nesse seu menu, digamos que é feito de acordo um DBF onde você guarda os nomes das impressoras, comandos, e o caminho. Acho que todo este procedimento, deveria ser padrão para TODOS nós.
Um clip-abraço, espero ter te ajudado :)Pos
Colega Pablo,
Muito obrigado por sua participação.
Todavia eu já estou fazendo um MENU de impressoras e o operador está escolhendo em qual vai imprimir. O problema é que após um operador selecionar uma impressora, e por acaso esta estação onde ele está operando também tem uma impressora conectada nele, por exemplo na LPT1, então esta impressora receberá o endereço da nova impressora que o operador selecionou. Se neste momento, alguém de outro terminou enviar um relatório para esta estação, então o relatório ao invés de saír na impressora desta estação, sairá na impressora da estação que o operador selecionou.
O que quero dizer é o seguinte: Quando dou o comando NET USE LPT1 \\ESTACAO1\IMP1, se houver uma impressora compartilhada nesta estação que estou fazendo isto, então nas propriedades desta impressora no windows, será trocado o caminho de LPT1 [porta de impressora] para LPT1 [\\ESTACAO1\IMP1].
Isto é um problema, pois alguém pode neste instante querer imprimir de outra estação nesta impressora e ela automaticamente remeterá para \\ESTACAO1\IMP1, pois acabou de ser trocado o caminho.
Valmir
Impressoras na rede
Enviado: 16 Set 2006 08:49
por Pablo César
Caro Valmir,
Agora entendo sua situação. Nunca passei por isso. Mas deixe te dar outra dica muito importante. Falamos de ter um arquivo de impressoras, com nome_impressora, caminho, comandos e coloque tambem um campo para definir a porta (LPT1,LPT2, etc).
Além disso eu aconselho você ler o arquivo WIN.INI (onde quarda os nomes das impressoras instaladas no WINDOWS dessa máquina, pelo menos no WIN98 é assim), para saber se ja tem impressora LOCAL nessa estação. Pois se nessa estação houver impressora instalada na LPT1, isto é sem caminho algum, daí você deveria capturar impressora de uma outra estação na LPT2 não na LPT1.
Em sintese, se você ja tem uma impressora LOCAL na estação onde está trabalhando, então para capturar utilize a seguite porta LPT2.
Experimente a ver se isto influencia. Claro que você deverá fazer ajustes no seu programa para que aceite o caminho da impressora capturada. Eu utilizo da seguinte forma:
1. Quando no meu arquivo de impressoras, no campo PORTA for igual a 0 (ZERO), eu passo a ler o outro campo chamado CAMINHO (que é onde mostra onde está a impressora instalada).
2. Como ei disse, eu SEMPRE gero arquivo de impressão. Para imprimir, utilizo o comando COPY ou COPY FILE.
Exemplo:
IF (23->PORTA)=0
VIMP="COPY LOCA_01.PRN "+ALLTRIM(23->IMPLOCAL)+" > NUL"
RUN (VIMP)
ELSE
IF PRINTER((23->PORTA)) // verifica se a impressora está ligada
COPY FILE("LOCA_01.PRN") TO ("LPT"+STR(23->PORTA,1,0))
ENDIF
ENDIF
Quanto a verificação das impressoras instaladas no WINDOWS de cada estação, o nosso BENEMÉRITO colega MALIGNO, está desenvolvendo uma opção no aplicativo WAPI, que irá relacionar as impresoras. O que iria facilitar muito toda essa questão, porque daí você teria o NOME correto de cada impressora instalada na rede. E o WAPI poderia colocar a no spool conforme o NOME_IMPRESSORA passado.
Outra coisa que eu acho muito importante, você colocar uma identificação própria para cada impressora instalada. Isto é, se você instalou uma impressora (e que está compartilhada), coloque o nome da impressora por exemplo: EPSON LX-300 (EA) e outras como EPSON LX-300 (EB), e assim por diante. Isto facilitará também para identificação e saber onde imprimirá.
Um clip-abraço :)Pos
Enviado: 17 Set 2006 14:06
por ANDRIL
Ola,
Eu passei por situação semelhante quando teimava em capturar a impressora de outro micro como LPT1 tendo no meu micro uma impressora fisicamente instalada.
Resolvi o problema deixando a porta LPT1 exclusivamente para a impressao LOCAL, e coloquei dentro do sistema uma opcao onde se coloca as portas de impressao ficando +- assim:
Temos 3 micros A, B, C todos com impressoras instaladas fisicamente.
No micro A:
LPT1 imprime local no micro A
LPT2 imprime no micro B
LPT3 imprime no micro C
No micro B:
LPT1 imprime local no micro B
LPT2 imprime no micro A
LPT3 imprime no micro C
No micro C:
LPT1 imprime local no micro C
LPT2 imprime no micro A
LPT3 imprime no micro B
Em cada maquina devera ter um arquivo texto ou dbf contendo os direcionamentos para que na hora de imprimir o usuario escolha o destino atraves de um ACHOICE ou DBEDIT.
Boa Sorte,
Andril
Enviado: 18 Set 2006 10:30
por Eliane
Passei por um problema semelhante. Resolvi assim:
1- Criei um aquivo de impressoras - PRINTERS.EXP ( texto)
\\caminho
+ Estacao onde é local
# tipo
* modelo
( usuario)
\\1-PREMERAO\HP +001 #HP *HP-710 ( Carlos )
\\2-SEGUNDO\LX300-2 +002 #EP *LX-300 ( Fabio )
\\3-TERCEIRO\LX300-3 +003 #EP *LX-300 ( Pedro )
\\4-QUARTO\LX810-4 +004 #EP *LX-810 ( Cesar )
\\5-QUINTO\LX300-5 +005 #EP *LX-300 ( Joao )
\\6-SEXTO\LX-810-6 +006 #EP *LX-810 ( Beto )
\\7-SETIMO\LQ-850 +007 #EP *LQ-850 ( Caixa )
2- No primeiro prog do sistema, lê este arquivo e guarda em uma tabela, ex: TABIMP.( os símbolos +,#,* sao para facilitar a leitura no texto). Lê depois no autoexec pela funcao WKSNET o numero da estacao e guarda em var.publica, ex: pu_estacao
3- Na hora de imprimir, apresenta uma lista de impressoras ao usuario
4- Se TABIMP[escolha_usu,2] = pu_estacao
porta := LPT1
Senao
porta := LPT2
5- LPT1 se local, LPT2 se rede
IF pa_porta = "LPT2"
// desabilita porta se existir
l_comando := "NET USE " + pa_porta + " /delete > LPT.LOG"
RUN &l_comando
// captura porta com NET USE
l_comando := "NET USE "+ pa_porta + " " + TABIMP[pa_item,1] + "
>LPT.LOG"
RUN &l_comando
IF "ERRO" $ UPPER(MEMOREAD("LPT.LOG"))
NewALERT('Impressora/Terminal Desligado ou conexÆo de
rede '+;
'invalida. Impressora nÆo dispon¡vel. Tente outra
impressora. ')
RETURN(l_status)
ENDIF
ENDIF
set device to printer
set printer to &pa_porta
Se interessar, posso mandar os fontes. Espero ter ajudado.
Impressoras na rede
Enviado: 18 Set 2006 11:16
por Pablo César
Muito bom Eliane !
Gostei da sua solução através de identificação de cada terminal. Embora, eu ja faço essa diferenciação através do arquivo de impressoras e fica em cada estação gravada no C:. Isto é, para cada terminal (incluindo o servidor), irá ter um arquivo de impressoras, e nele a sua diferenciação de comando, nomes e localização com o caminho e número da porta.
Mas é muito bom, a gente trocar figurinhas pelo FORUM. Ajuda a enriquecer as idéias.
Um clip-abraço
:)Pos
Enviado: 19 Set 2006 08:44
por Eliane
Pablo, eu também fazia como vc. Cada terminal tinha um arquivo de impressoras no C:. Só que estava dando muita confusão. Cada pião que vinha fazer manutenção nas màquinas fazia uma confusão diferente com as impressoras. Resolvi fazer um único arq. de impressoras e colocar na rede. Facilitou a minha vida ...
Impressoras na rede
Enviado: 19 Set 2006 09:09
por Pablo César
É... acho que por esse lado, você tem razão. Eu também tenho um .DBF, onde guardo o PATH onde o WORD, EXCEL, IEXPLORE.EXE se encontram para cada máquina. Isto porque no meu sistema utilizo eles, com o caminho completo e de acordo ao nome de cada estação sem nenhum problema. Que inclusive eu pego de acordo ao NETNAME(). Legal Eliane.
Um clip-abraço
:)Pos