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 ?.sygecom escreveu:acho que o colega jah tem bastante opção...é só ele ver o que melhor serve...para a situação dele !!!
Mais um dúvida: Imprimir em rede
Moderador: Moderadores
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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.
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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.
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.
Mas o Windows usa centenas de executáveis.Putz, imagina por ex rodar o Windows através de dezenas 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!
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!
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?
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?
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.
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!
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!
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
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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.
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.
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
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
Código: Selecionar todos
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Perfecto !.ERCS123 escreveu:Eu escolhi, fazer um arquivo temp na maquina de cada usuario na pasta chamada SISTEMA.
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. */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.
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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:
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.
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")
ENDIFNo 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.
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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
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ê.
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.EXEUm 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.
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.
Olá Pablo, boa noite!
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?
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
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.
Código: Selecionar todos
@ECHO OFF
NET USE F: \\SERVIDOR\C
NET USE LPT2 \\SERVIDOR\EPSON
F:
CD\SISTEMA
SISTEMA.EXE
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- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Boa noite, Ewerton !
/* 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.
Com certeza, vai ser sobre-escrito.ERCS123 escreveu:Se imprimir um outro relatorio, mas com informacoes diferentes, esse comando COPY ele grava por cima ?
Sim pode.ERCS123 escreveu:Nessa rede que vou montar, vai ser tudo XP, o .bat pode ser o mesmo do seu exemplo?
/* 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.
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.



