Ainda na bronca com windows xp X clipper
Moderador: Moderadores
-
san.tembra@ig.com.br
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 14 Jan 2007 11:59
Ainda na bronca com windows xp X clipper
tenho tido problemas serios de perda de dados, duplicacao de dados, corrompimento frequente de indices, corrompimento de arquivos dbfs e etc....tudo isso depois q foi instalado o xp em algumas maquinas da rede. Cmpilo cl52 e rtlink. Sera q se eu passar a compilar c o blinker, vai funcionar normalmente com o xp? minha rede é mista, com win98 e xp, erro de codigo acho dificil ser, pois antes funcionava ha anos a mesma aplicacao com w98. Tem que padronizar a rede?, uma luz pelo amor de deus? alguem ja passou por isso?
XP e CLIPPER
Bem... eu consegui montar uma rede xp com um sistema em clipper... veja o que precisa ser feito (nao necessariamente he he he)
Configuracao para XP
1) JAMAIS DEIXE O WIN98 SER O SERVIDOR DOS ARQUIVOS... SE FOR O CASO, PASSE PARA UMA MAQUINA XP (COMPARTILHE A PASTA COM ACESSO COMPLETO)
2) NAS MAQUINAS XP FAÇA O SEGUINTE:
a) INICIAR-EXECUTAR Digite MsConfig
Abra o arquivo System.ini
Na secao [386ENH] inclua a seguinte linha: PerVMFiles=255
b) Edite o arquivo CONFIG.NT que esta em c:\Windows\System32
na ultima linha acrescente
EMM=RAM
c) Edite o arquivo autoexec.nt (em c:\Windows\system32)
set clipper=f255
d) No icone que voce vai chamar o PROGRAMA.EXE nunca chame-o diretamente, mas crie um bat para chamar o exe
Exemplo:
@echo off
cls
mode con lines=25 cols=80
programa.exe
e) No icone que chama esse bat, clicar com o botao direito em propriedades
localize compatibilidade e coloque compatibilidade de win98
f) outra coisa muito legal... JAMAIS DEIXE O SEU PROGRAMA.EXE no servidor e faça todas as estacoes chamar de lá... a rede fica pesada...
altere seu programa para chamar os dbfs pela (SET DEFAULT TO H:)rede mas cada máquina fica com o seu PROGRAMA.EXE .. menos trafego... mais agilidade...
quer ver como fiz o meu conecta.bat ?
----------------------------------------
@echo off
cls
Echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Echo Efetuando conexao
Echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Echo.
Echo conectando ao servidor...
net use h: \\AnfariSrv\Mestre 123 >NUL
Echo conectando a impressora Deskjet...
net use lpt1 \\Lidiane\845 /YES >NUL
Echo Sincronizando a hora
net time \\AnfariSrv /YES >NUL
if errorlevel 1 goto falha
goto ok
:falha
cls
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo Í Nao foi possivel estabelecer a conex„o com o Servidor... Í
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Echo.
Echo Motivos possiveis:
Echo 1) Servidor:
Echo - Desligado
Echo - Hub Desligado
echo - Cabo desconectado
echo - Ao iniciar o Windows aqui, voce nao digitou a senha de rede corretamente
echo 2)
Echo - O cabo de rede do SEU micro esta desconectado
Echo - Verifique o problema e tente novamente
Echo - Nao conseguindo, consulte o gerenciador de rede
Echo.
pause>Nul
goto fim
:ok
h:
cls
Central.exe
c:
if errorlevel 1 pause >nul
:fim
net use h: /delete >Nul
net use lpt1 /delete >Nul
-----------------------------------------
Configuracao para XP
1) JAMAIS DEIXE O WIN98 SER O SERVIDOR DOS ARQUIVOS... SE FOR O CASO, PASSE PARA UMA MAQUINA XP (COMPARTILHE A PASTA COM ACESSO COMPLETO)
2) NAS MAQUINAS XP FAÇA O SEGUINTE:
a) INICIAR-EXECUTAR Digite MsConfig
Abra o arquivo System.ini
Na secao [386ENH] inclua a seguinte linha: PerVMFiles=255
b) Edite o arquivo CONFIG.NT que esta em c:\Windows\System32
na ultima linha acrescente
EMM=RAM
c) Edite o arquivo autoexec.nt (em c:\Windows\system32)
set clipper=f255
d) No icone que voce vai chamar o PROGRAMA.EXE nunca chame-o diretamente, mas crie um bat para chamar o exe
Exemplo:
@echo off
cls
mode con lines=25 cols=80
programa.exe
e) No icone que chama esse bat, clicar com o botao direito em propriedades
localize compatibilidade e coloque compatibilidade de win98
f) outra coisa muito legal... JAMAIS DEIXE O SEU PROGRAMA.EXE no servidor e faça todas as estacoes chamar de lá... a rede fica pesada...
altere seu programa para chamar os dbfs pela (SET DEFAULT TO H:)rede mas cada máquina fica com o seu PROGRAMA.EXE .. menos trafego... mais agilidade...
quer ver como fiz o meu conecta.bat ?
----------------------------------------
@echo off
cls
Echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Echo Efetuando conexao
Echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Echo.
Echo conectando ao servidor...
net use h: \\AnfariSrv\Mestre 123 >NUL
Echo conectando a impressora Deskjet...
net use lpt1 \\Lidiane\845 /YES >NUL
Echo Sincronizando a hora
net time \\AnfariSrv /YES >NUL
if errorlevel 1 goto falha
goto ok
:falha
cls
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo Í Nao foi possivel estabelecer a conex„o com o Servidor... Í
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
Echo.
Echo Motivos possiveis:
Echo 1) Servidor:
Echo - Desligado
Echo - Hub Desligado
echo - Cabo desconectado
echo - Ao iniciar o Windows aqui, voce nao digitou a senha de rede corretamente
echo 2)
Echo - O cabo de rede do SEU micro esta desconectado
Echo - Verifique o problema e tente novamente
Echo - Nao conseguindo, consulte o gerenciador de rede
Echo.
pause>Nul
goto fim
:ok
h:
cls
Central.exe
c:
if errorlevel 1 pause >nul
:fim
net use h: /delete >Nul
net use lpt1 /delete >Nul
-----------------------------------------
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ahhh agora entendí o por quê você EMERSON, se sentiu atingido. Agora ví que você tinha respondido. Mas quando eu postei a minha mensagem você ainda não tinha repsondido, percebeu ?. E eu ainda pedí (no outro tópico antigo dele) pro SAN.TEMBRA para apagar este tópico. Bem, deixemos já de lado o tudo falado, que ja rendeu o bastante (isso espero).
Me deixe fazer alguma colocações sobre a sua sugestão EMERSON.
1. Gostei da sua colocação e exemplificação da sua idéia. Isto de colocar os executáveis em cada estação, parece-me muito bom. Não tenho experiência quanto a isso, se bem aqui no FORUM lembro que mais alguém comentou sobre isso também. Espero que vocês tenham TODA razão disso, porque eu gostaria de fazer o mesmo no meu sistema. A principio você parece ter muita razão.
2. A questão do arquivo .BAT, realmente concordo plenamente com isto. Pois é assim, que podemos versatilizar mais ainda os recursos de chamadas de programas, ora externos, ora específicos para cada versão do OS.
3. Discordo com algumas formas que foram forçados o mapeamento através do NET USE. Se bem que você após da MAPEAMENTO você também sincroniza a data e hora (muito bom), mas deveria tratar o NET USE de forma específica para cada versão do WINDOWS. Ora porque a opção /YES e >NUL, não é sempre aceito em TODAS as versões do OS.
No entanto, considero que você colocou um exemplo (simplificado) a fim de não fazer muita RADICALIZAÇÃO na sua idéia, mas no final de contas você apresentou uma idéia EXCELENTE.
Eu também (em partes) ja procedo como você, porém me faltaria fazer o SET DEFAULT TO <drive_fixo>. E a unidade ora mencionada H:, é muito conveniente, pois tem PC com 2 CD-ROMS as vezes.
Parabéns, EMERSON.
Obs.: Tem mais uma coisa, que não gostei e gostaria de saber a sua razão EMERSON. Por quê você MATA a conexão seja com o SERVIDOR-DE-DADOS como também com a IMPRESSORA. Por quê isso ?. se digamos, que todo sistema tem seu proprio mapeamento "forçado". ??
Um clip-abraço ! :)Pos E gostariamos de que o colega SAN.TEMBRA, nos deixe saber, se seus testes quais foram seus resultados, ok ? :)Pos
Me deixe fazer alguma colocações sobre a sua sugestão EMERSON.
1. Gostei da sua colocação e exemplificação da sua idéia. Isto de colocar os executáveis em cada estação, parece-me muito bom. Não tenho experiência quanto a isso, se bem aqui no FORUM lembro que mais alguém comentou sobre isso também. Espero que vocês tenham TODA razão disso, porque eu gostaria de fazer o mesmo no meu sistema. A principio você parece ter muita razão.
2. A questão do arquivo .BAT, realmente concordo plenamente com isto. Pois é assim, que podemos versatilizar mais ainda os recursos de chamadas de programas, ora externos, ora específicos para cada versão do OS.
3. Discordo com algumas formas que foram forçados o mapeamento através do NET USE. Se bem que você após da MAPEAMENTO você também sincroniza a data e hora (muito bom), mas deveria tratar o NET USE de forma específica para cada versão do WINDOWS. Ora porque a opção /YES e >NUL, não é sempre aceito em TODAS as versões do OS.
No entanto, considero que você colocou um exemplo (simplificado) a fim de não fazer muita RADICALIZAÇÃO na sua idéia, mas no final de contas você apresentou uma idéia EXCELENTE.
Eu também (em partes) ja procedo como você, porém me faltaria fazer o SET DEFAULT TO <drive_fixo>. E a unidade ora mencionada H:, é muito conveniente, pois tem PC com 2 CD-ROMS as vezes.
Parabéns, EMERSON.
Obs.: Tem mais uma coisa, que não gostei e gostaria de saber a sua razão EMERSON. Por quê você MATA a conexão seja com o SERVIDOR-DE-DADOS como também com a IMPRESSORA. Por quê isso ?. se digamos, que todo sistema tem seu proprio mapeamento "forçado". ??
Um clip-abraço ! :)Pos E gostariamos de que o colega SAN.TEMBRA, nos deixe saber, se seus testes quais foram seus resultados, ok ? :)Pos
- Ola Krinski
- Muito legal o seu BAT. Parabens !
- Analisando ele so fiquei com uma duvida. Me diga se estou enganado, mas :
1) Na dica "f)" voce sugere o EXE na maquina local direcionando os arquivos internamente com "SET DEFAULT TO H:".
2) Mas sua chamada do programa ficou sendo feita no servidor.
: o k
h: <<<<------- vai para o servidor
cls
Central.exe <<<<----- Executa la.
c:
- Como dica voce podera passar como parametro ao programa o caminho dos arquivos.
Exemplo : Central.exe H:\SEU_DIR
- Como diz o ditado, casa de ferreiro, espeto de pau...rs
- Nao me leve a mal, isso foi so uma brincadeira, espero que entenda assim.
- Seu BAT esta muito legal, muito explicativo.
- Mais uma vez parabens pelo post.
- Abracao :)Pos
- Muito legal o seu BAT. Parabens !
- Analisando ele so fiquei com uma duvida. Me diga se estou enganado, mas :
1) Na dica "f)" voce sugere o EXE na maquina local direcionando os arquivos internamente com "SET DEFAULT TO H:".
2) Mas sua chamada do programa ficou sendo feita no servidor.
: o k
h: <<<<------- vai para o servidor
cls
Central.exe <<<<----- Executa la.
c:
- Como dica voce podera passar como parametro ao programa o caminho dos arquivos.
Exemplo : Central.exe H:\SEU_DIR
- Como diz o ditado, casa de ferreiro, espeto de pau...rs
- Nao me leve a mal, isso foi so uma brincadeira, espero que entenda assim.
- Seu BAT esta muito legal, muito explicativo.
- Mais uma vez parabens pelo post.
- Abracao :)Pos
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Sim de fato tem um erro de posicionamento (na BAT do Emerson), assim como disse o colega dr_spock, mas a outra sugestão dele contradisse com a do colega Emerson, pois a idéia é executar o(s) executável(is) no local ( isto é no C: ) e fazer o SET DEFAULT TO H:
Outra coisa que gostaria de mencionar, acrescendo um pouco mais de melhorias nessa BAT. Seria uma rotina de verificação se o prog X já não está sendo executado em outra sessão no mesmo PC. A fim de evitar abertura do sistema em MULTI-SESSÃO. Para isso, pode ser utilizado o WAPI do MALIGNO para WINDOW2TOP a sesão aberta anteriormente e fecha a vigente. Enfim, tem inúmeras opções a serem incluídas, tais como ver que está LOGANDO, forçar o título da JANELA para verificar se já está sendo executado, criar sub-arquivos .BAT para cada estação diferenciando a versão do OS e de diferentes IMPRESSORAS (segundo o terminal que está chamando), etc...
Um clip-abraço :)Pos
Outra coisa que gostaria de mencionar, acrescendo um pouco mais de melhorias nessa BAT. Seria uma rotina de verificação se o prog X já não está sendo executado em outra sessão no mesmo PC. A fim de evitar abertura do sistema em MULTI-SESSÃO. Para isso, pode ser utilizado o WAPI do MALIGNO para WINDOW2TOP a sesão aberta anteriormente e fecha a vigente. Enfim, tem inúmeras opções a serem incluídas, tais como ver que está LOGANDO, forçar o título da JANELA para verificar se já está sendo executado, criar sub-arquivos .BAT para cada estação diferenciando a versão do OS e de diferentes IMPRESSORAS (segundo o terminal que está chamando), etc...
Um clip-abraço :)Pos
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Gostei tb. do .BAT......mas Tche, meus sistemas são maioria em rede e deixo o executavel e os dbf tudo no servidor e naum tenho problema de desempenho na rede.....o caso do nosso colega san.tembra deve ser alguma rotina que não esta bloqueando o arquivo antes de gravar ou liberar o arquivo quando travado.....(problema no WIN-XP não deve ser)bom isso é o que eu acho....o ideal seria ele postar a rotina onde esta dando o problema de perda de dados pra nos todos dar uma olhada e tentar ajudar......
Abraços
Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
san.tembra@ig.com.br
- Usuário Nível 1

- Mensagens: 4
- Registrado em: 14 Jan 2007 11:59
Minhas rotinas de tratamento de arquivos em rede.
* NETUSE - VERIF. USO COMPARTILHADO DE ARQUIVOS - 18/03/1993 *
compilo rtlink clipper 5.2....
Código: Selecionar todos
FUNCTION NETUSE
PARAMETERS ARQ,APE,EXUSE,TEMPO
PRIVATE SEMPRE
SEMPRE=(TEMPO=0)
DO WHILE (SEMPRE .OR. TEMPO>0) .AND. INKEY()#27
IF EXUSE
USE &ARQ ALIAS &APE EXCLUSIVE
ELSE
USE &ARQ ALIAS &APE shared
ENDI
IF .NOT. NETERR()
RETURN (.T.)
ENDI
ENDDO
RETURN (.F.)
* ARQLOC - TRAVAR ARQUIVO - 18/03/1993 *
FUNCTION ARQLOC
PARAMETERS TEMPO
PRIVATE SEMPRE
IF FLOCK()
RETURN (.T.)
ENDI
SEMPRE=(TEMPO=0)
DO WHILE (SEMPRE .OR. TEMPO > 0) .AND. INKEY() # 27
INKEY(.5)
TEMPO=TEMPO - .5
IF FLOCK()
RETURN (.T.)
ENDI
ENDDO
RETURN (.F.)
* REGLOC - TRAVAR REGISTRO - 18/03/1993 *
FUNCTION REGLOC
PARAMETERS TEMPO
PRIVATE SEMPRE
IF RLOCK()
RETURN (.T.)
ENDI
SEMPRE=(TEMPO=0)
DO WHILE (SEMPRE .OR. TEMPO > 0) .AND. INKEY() # 27
IF RLOCK()
RETURN (.T.)
ENDI
INKEY(.5)
TEMPO=TEMPO - .5
ENDDO
RETURN (.F.)
* ADIREG - TRAVAR REGISTRO P/ APPEND BLANK - 18/03/1993 *
FUNCTION ADIREG
PARAMETERS TEMPO
PRIVATE SEMPRE
APPEND BLANK
IF .NOT. NETERR()
RETURN (.T.)
ENDI
SEMPRE=(TEMPO=0)
DO WHILE (SEMPRE .OR. TEMPO > 0) .AND. INKEY() # 27
APPEND BLANK
IF .NOT. NETERR()
RETURN (.T.)
ENDI
INKEY(.5)
TEMPO=TEMPO - .5
ENDDO
RETURN (.F.)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Caro colega San.Tembra,
No seu código-fonte postado, o que me chamou a atenção é o condicionamento para saída da tecla 27 (Esc) no DO WHILE. Nessas rotinas de REDE, indicado por um autor que agora não lembro, tem essa condição que permite o usuário ABORTAR enquanto o procedimento INTENTA abrir BD. E isto pode ser um dos motivos que possa estar causando a perda de inclusão de registros ou escrita em si no seu BD. Pois observe que muita vezes o usuário é impolgado a teclar inúmeras vezes o ESC enquanto ele não vê alguma tela diferente ou algo para que ele tenha que esperar. Não sei, mas acredito que pode ser isto um dos motivos. Eu ja passei por isso, e no meu sistema estava ocorrendo isso direto. Tire o ".AND. INKEY()#27" nas suas funções de REDE e você observará no decorrer se era este o seu problema. Esta é a minha opinião: eu acho que na hora que está sendo aberto o arquivo de dados ou bloqueio do arquivo, o usuário não tem porquê INTERROMPER este procedimento, tem que GRAVAR. Eu não sei no que implicaria no seu sistema o procedimento indicado por mim. Mas ainda continuo achando que você não terá problemas se tirar o ESC como condição.
Outra coisa que é válido ressaltar e que com certeza é muito válido para detectar ERROS. É fazer que TODO tipo de ERRO que ocarra no sei sistema, gravasse em arquivo. A fim de que de tempos em tempos você pudesse vistoriar os erros que talvez pudessem provocar essas INCONSISTÊNCIAS. O caminho para gravar esses ERROS seria implementar um rotina de gravação em arquivo que é feito no ERRORSYS.PRG. Existem vários exemplos. E são úteis porque a vezes ocorrem problemas no sistema (erros que a vezes são de programação) e o usuário não te comunica. Com isto, você poderá CERCAR tdo tipo de ERRO podendo melhorar e deixar o teu sistema mais SEGURO.
Um clip-abraço :)Pos
No seu código-fonte postado, o que me chamou a atenção é o condicionamento para saída da tecla 27 (Esc) no DO WHILE. Nessas rotinas de REDE, indicado por um autor que agora não lembro, tem essa condição que permite o usuário ABORTAR enquanto o procedimento INTENTA abrir BD. E isto pode ser um dos motivos que possa estar causando a perda de inclusão de registros ou escrita em si no seu BD. Pois observe que muita vezes o usuário é impolgado a teclar inúmeras vezes o ESC enquanto ele não vê alguma tela diferente ou algo para que ele tenha que esperar. Não sei, mas acredito que pode ser isto um dos motivos. Eu ja passei por isso, e no meu sistema estava ocorrendo isso direto. Tire o ".AND. INKEY()#27" nas suas funções de REDE e você observará no decorrer se era este o seu problema. Esta é a minha opinião: eu acho que na hora que está sendo aberto o arquivo de dados ou bloqueio do arquivo, o usuário não tem porquê INTERROMPER este procedimento, tem que GRAVAR. Eu não sei no que implicaria no seu sistema o procedimento indicado por mim. Mas ainda continuo achando que você não terá problemas se tirar o ESC como condição.
Outra coisa que é válido ressaltar e que com certeza é muito válido para detectar ERROS. É fazer que TODO tipo de ERRO que ocarra no sei sistema, gravasse em arquivo. A fim de que de tempos em tempos você pudesse vistoriar os erros que talvez pudessem provocar essas INCONSISTÊNCIAS. O caminho para gravar esses ERROS seria implementar um rotina de gravação em arquivo que é feito no ERRORSYS.PRG. Existem vários exemplos. E são úteis porque a vezes ocorrem problemas no sistema (erros que a vezes são de programação) e o usuário não te comunica. Com isto, você poderá CERCAR tdo tipo de ERRO podendo melhorar e deixar o teu sistema mais SEGURO.
Um clip-abraço :)Pos
eu ja utilizo um .bat parecido com esse ai para chamar mapear unidade de rede rodar o executavel. todos os arquivos ficam em um servidor.. sem problema algum.
com relaçao de corromper arquivo, duplicar linhas e outros fantasma resolvi de forma simpres:
se a rede so tem windows xp --> todas as maquinas com partiçao ntfs
se a rede eh mista com xp e 98 --> todas as maquinas com partição fat32..
espero q ajude
com relaçao de corromper arquivo, duplicar linhas e outros fantasma resolvi de forma simpres:
se a rede so tem windows xp --> todas as maquinas com partiçao ntfs
se a rede eh mista com xp e 98 --> todas as maquinas com partição fat32..
espero q ajude
""
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Tche, eu não tenho problemas de corromper arquivos ou duplicidade de registros...mas achei no minino interesante esse negocio na partição.......saberia me dizer o pq disso ?? pq tem que esta no formato que vc falou?.......hj tenho clientes com win98 em FAT32 e winxp em NTFS tudo em rede e sem problemas.clauber escreveu:com relaçao de corromper arquivo, duplicar linhas e outros fantasma resolvi de forma simpres:
se a rede so tem windows xp --> todas as maquinas com partiçao ntfs
se a rede eh mista com xp e 98 --> todas as maquinas com partição fat32..
Obs: Sei que time que esta ganhando não se mexe....mas seria bom saber....gosto de esta sempre aprendendo....fico no aguardo...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
