Mais um dúvida: Imprimir em rede

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

sygecom escreveu:acho que o colega jah tem bastante opção...é só ele ver o que melhor serve...para a situação dele !!!
Take easy boy ! Eu sou estou expondo a minha forma de trabalhar e quem sabe isso possa servir de exmplo para alguém. Sabendo que o colega está começando a entender toda essa questão de ambiente de rede, acho que é bom que ele tenha bons exemplos. Você mencionou os casos que podem ocorrer e isso é bom tomar em conta. Aqui não se trata de limitar a ninguém. Tudo é opção de cada um, certo colega ?.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Certo...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

...dezenas de executáveis...
Putz, imagina por ex rodar o Windows através de dezenas de executáveis?
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Pior que funciona sem problemas algum, você disse rodandoem rede ?. Mas considere que nem todos ficam mudando de opção em opção do sistema. Mas de todas formas, eu penso sempre nessa sua idéia (mesmo eu com dezenas de executáveis. Só que você não me respondeu, vale a pena ? è considerável o ganho ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Putz, imagina por ex rodar o Windows através de dezenas de executáveis?
Mas o Windows usa centenas de executáveis.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Putz, me expressei "mal" (entre caspas). Que o Win use centenas de executáveis, pode até fazer sentido, afinal...

Agora, uma aplicação pequena (pequena em relação ao Windows), comum, cuidando de algumas dúzias de DBFs, precisa mesmo ter centenas de executáveis?

Aliás, taí um bom NOVO TÓPICO... O que é e como deve ser um Exe um "E" maiúsculo?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ah, sim. Agora entendi. :)))
Bom, um aplicativo Windows pode sim ter centenas ou milhares de executáveis. Conheço uma empresa daqui de Londrina que tem um sistema completo de contabilidade feito em Visual COBOL, que tem mais de 4000 executáveis. Toda a instalação come uns 500MB de disco.

Agora, programa Clipper mesmo nunca vi nada com mais do que algumas dúzias de executáveis. Talvez tenha maiores. Eu só uso um.

Acho boa idéia abrir um tópico pra se discutir isso.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Olá pessoal!

Todo mundo deu sua opnião....muito obrigado mesmo......mas tenho pouca experiencia, e não sei qual escolher. Achei interessante em usar time() ou fazer um arquivo temporario em cada terminal, enfim, no meu caso em que a rede vai ter no maximo 5 micros, o que seria mais facil para implantação? (se nao for pedir muito, se possivel indicar no meu codigo fonte, onde seria as alterações. Porque senão, não vou conseguir colocar em pratica, os exemplos de voces)

Boa noite!

Ewerton
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Você prefere a forma mais rápida e prática ou a forma mais elaborada e completa ? Tudo depende de você Ewerton. Está bem que saimos um pouquinho... hihi do assunto mas a intenção não era de embrulhar algo e dizer isto é o melhor, quem decide como trabalhar é o dono do sistema. Aqui realmente surgem muitas idéias (está cheio de cabeças pensantes) e você pode contar conosco, há vezes surgem polêmicas e isso é normal.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Pablo, quando puder, conferir para mim as alterações. Eu escolhi, fazer um arquivo temp na maquina de cada usuario, dentro de uma pasta chamada SISTEMA.


EWERTON


[/code]



ANTES

erase arqtemp.dbf
copy to arqtemp.dbf for co1 >= m_cod1 .AND. co1 <= m_cod2
use arqtemp alias temp new

DEPOIS

ERASE C:\SISTEMA\ARQTEMP.DBF
COPY C:\SISTEMA\ARQTEMP.DBF FOR co1 >= m_cod1 .AND. co1 <= cod2
USE ARQTEMP ALIAS TEMP SHAR // deve colocar SHAR ou pode deixar como NEW ?


ANTES

if (LastRec() == 0)
mens("Vendedor nao Cadastrado!")
tone(900, 9)
InKey(6)
erase arqtemp.dbf
close databases
return
endif


DEPOIS:


if (LastRec() == 0)
mens("Vendedor nao Cadastrado!")
tone(900, 9)
InKey(6)
erase C:\SISTEMA\ARQTEMP.DBF
close databases
return
endif


confirma("Relatorio","Clientes")
cresp:= Space(1)
@ 23, 78 get Cresp picture "@!" valid cresp $ "SN"
read

ETC
ETC
ETC
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

ERCS123 escreveu:Eu escolhi, fazer um arquivo temp na maquina de cada usuario na pasta chamada SISTEMA.
Perfecto !.

O comando COPY <campo1, campo2...> TO não estaria sobreescrevendo o arquivo ARQTEMP.DBF ? Ou ele appenda, você sabe dizer isso ?. Se for o COPY não for appendar então não haveria necessidade de deletar o ARQTEMP.DBF.

Caso que tenha que deletá-lo, eu sempre verifico se existe (para que não dê erro), então ficaria:

Código: Selecionar todos

IF FILE("C:\SISTEMA\ARQTEMP.DBF")
    DELETE FILE("C:\SISTEMA\ARQTEMP.DBF")
ENDIF
COPY FIELDS <ponha aqui os nomes dos campos apenas necessários> TO C:\SISTEMA\ARQTEMP.DBF FOR co1 >= m_cod1 .AND. co1 <= cod2 
USE ARQTEMP ALIAS TEMP NEW   /*  Aqui como você mesmo percebeu, não precisa ser compartilhado. */
O resto do seu código está normal. Viu, foi fácil, não é ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Caro Ewerton,

Não há necessidade de deletar o temporário, pois o COPY TO sobre-escreve o arquivo. então podem serem removidas as linhas:

Código: Selecionar todos

IF FILE("C:\SISTEMA\ARQTEMP.DBF") 
    DELETE FILE("C:\SISTEMA\ARQTEMP.DBF") 
ENDIF


No seu exemplo estava faltando o "TO" na linha onde você executa o comando "COPY". E os nomes dos campos após o FILEDS devem serem passados separados com vírgula (isto fica mais exuto seu arquivo TEMP.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Tem mais uma dica que se quiser levar em conta Ewerton.

Normalmente eu Utilizo um arquivo .BAT para chamar a minha aplicação/Clipper. A utilização desse arquivo .BAT me permite que possa inserir comandos de rede como por exemplo NET USE LPT1 \\PC1\EPSON (que serve para capturar a impressora compartilha em rede). Considerando que você está numa estação e o seu mapeamento de rede para o servidor seja a unidade "F:" então básicamente seu arquivo .BAT irá ficar assim:

Arquivo: sis.bat

Código: Selecionar todos

@ECHO OFF
NET USE F: \\SERVIDOR\C
NET USE LPT2 \\SERVIDOR\EPSON
F:
CD\SISTEMA
SISTEMA.EXE
Veja nas linhas onde tem NET USE, estas podem ser opcionais. Não sei qual é a versão do seus Windows e nem sei se você mapea tudo direitinho. Mas é que em WIN98, normalmente o mapeamentos e captura (as vezes são perdidos). E é bom assegurar-se que esteja mapeados e capturadas as impressoras. Dei este exemplo para que sirva de base para você.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Olá Pablo, boa noite!

Código: Selecionar todos

O comando COPY <campo1, campo2...> TO não estaria sobreescrevendo o arquivo ARQTEMP.DBF ? Ou ele appenda, você sabe dizer isso ?. Se for o COPY não for appendar então não haveria necessidade de deletar o ARQTEMP.DBF. 
Não sei te dizer ao certo. Esse relatorio filtra os clientes pelo codigo inicial e codigo final. Assim o resultado da busca, é criado um dbf temporario, que em seguida será imprimido. Se imprimir um outro relatorio, mas com informacoes diferentes, esse comando COPY ele grava por cima ? por isso voce disse que nao precisa apagar?


Código: Selecionar todos

@ECHO OFF 
NET USE F: \\SERVIDOR\C 
NET USE LPT2 \\SERVIDOR\EPSON 
F: 
CD\SISTEMA 
SISTEMA.EXE
Esse .bat ( net use LPT2 \\ SERVIDOR\EPSON) é para garantir o mapeamento, caso o WIN98 perder? Nessa rede que vou montar, vai ser tudo XP, o .bat pode ser o mesmo do seu exemplo?


Aproveitando da sua boa vontade, o comando ZAP, quando eu for usar, eu posso aproveitar aquela funcao que voce me ensinou

[/code]
use clientes exclusive new
if neterre()
mensagem de alerta
return
endif
zap
dbunlock()

Código: Selecionar todos



Obrigado!

Ewerton
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Boa noite, Ewerton !
ERCS123 escreveu:Se imprimir um outro relatorio, mas com informacoes diferentes, esse comando COPY ele grava por cima ?
Com certeza, vai ser sobre-escrito.
ERCS123 escreveu:Nessa rede que vou montar, vai ser tudo XP, o .bat pode ser o mesmo do seu exemplo?
Sim pode.

/* feche a área CLIENTES se o arquivo ja estiver aberto
use clientes exclusive
if neterr()
mensagem de alerta
return
endif
zap
// dbunlock() Este comando não é necessário pois você está abrindo em modo exclusivo. Neste momento ninguém mais pode acessar o arquivo CLIENTES.

Mas me diga uma coisa, por quê você iria precisar ZAPear seu arquivo de clientes ?. Como eu falei tente evitar de todas formas utilizar o ZAP em rede.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder