Registros perdidos na Rede

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Registros perdidos na Rede

Mensagem por clodoaldomonteiro »

Olá!

Estou com um problema na inclusão de registros na rede.
Tenho a seguinte rede:
Os dados ficam instalados em um PC com XP e NTFS, já os outros PCs que acessam os dados tem Win98 com FAT32, ai eu simplesmente faço um mapeamento do PC com XP para acessar os dados dele nos PCs com win98.
Uso DBFNSX, que segundo vocês faz o sistema ficar mais rápido e gera arquivo de índice muito memor que o NTX.

Só que os dados incluídos através dos PCs win98 não são gravados no PC com XP.
Perco as vezes até 20 ou 30 registros e os meus clientes ficam P da vida com isso.

Pergunto:
- como eu deveria configurar os PCs para uma rede simples de dados?
- FAT32 e NTFS são 100% compatíveis para rede clipper?
- NSX contribui negativamente para o processo de gravação de dados em NTFS?.

Desde já agradeço a atenção.
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 »

Tomara que não seja isso (seus clientes ficariam mais P da vida ainda), mas já ouvi vários comentários de que XP com Win98 não é uma mistura muito saudável.
Agora, com relação a NTFS, não creio que haja problema. Não é o Clipper que manipula isso, e sim o XP. Os índices NSX poderiam sim ajudar a melhorar, principalmente no aspecto performance. Mas não é garantia de que vá resolver o problema. A perda de dados pode ter origem em vários fatores. A própria rede é um deles.
[]'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
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Já tive problemas assim também. Solucão ?
Instalei no servidor o Windows 2000 Server e fiz uma revisão no código, em tudo que dizia respeito as rotinas de edição, exclusão, etc...
respeitando religiosamente a ordem (que aliás já foi abordada em outros tópicos recentemente)
travar -> editar ou excluir -> descarregar os buffers -> destravar
Boa sorte
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Malígno, valeu a força, mas eu já uso os índices NSX e realmente tem um ganho considerável de performance. Caso tenha uma outra dica, fico aguardando.

Alamino Junior, pergunto a você:
- Se eu instalar em ambas as máquinas o XP, você acha que vai funcionar bem? Antes todos os PCs tinha win98 e nunca tinha dado esse problema, mas chegou um PC novo com o XP, que eu o elegi como servidor onde os dados vam ficar e os outros com o win98 teem somente o sistema .EXE e acessam a base de dados no PC com XP, que está mapeado como Z:
- Eu uso o GASpro para gerar 90% dos meus sistemas e eu acho que as rotinas de abertura de arquivo estão corretas, mas eu queria, se possível, que você me desse mais informações de como "travar e destravar" e outras rotinas para acessar dados pela rede.

Para incluir eu uso assim:

@ 10,10 get mCampo
...
...
...
... outros gets
READ
SELE EMP
GO BOTT
SKIP
BLOREG(0,.5)
APPEND BLANK
REPL CAMPO WITH MCAMPO,;
(continua o replaced)
UNLOCK
COMMIT

- queria saber se assim tá certo.

Desde já, agradeço a ajuda. :)Pos
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Mensagem por Maurício Elias »

Companheiro, já tive problemas esquisitíssimos na mistura Xp/98, na condição do 98 como servidor do Sistema.
Tudo 98, tudo Xp, ou Servidor Xp e estações 98 são as melhores opções. Ou servidor 2000, como citado.
Uso o Clipper 5.2, Blinker 4.1, índices Ntx. Compilo com o FreetSlice().
Ñ tenho problema algum.

Abraços.

Maurício
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Oi companheiro,
o append já insere e bloqueia o registro.
Então, não precisa ir para o "registro fanstasma" e bloquear o mesmo né!
Outra coisa, use o commit e depois destrave o registro.
Quanto a questão de win9x, xp. etc., é só colocar a máquina mais possante e com o software mais novo como servidor que tudo vai funcionar.

MarceloG.

SELE EMP
GO BOTT não precisa
SKIP registro fantasma
BLOREG(0,.5) prá quê?
APPEND BLANK criar e trava o registro
REPL CAMPO WITH MCAMPO,;
(continua o replaced)
UNLOCK inverte!
COMMIT inverte!
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Marcelo!
A rotina que lhe passei é criada pelo GASPRO e a função BLOREG() é usada para bloqueiar um registro na rede e eventualmente mostrará uma tela se der algum erro, ou seja, ela usa o rlock() e mostra um box se der algum erro.

Então pergunto, não preciso usar a função RLOCK()?

Obrigado pela ajuda e vou testar hoje mesmo, precisando estou às ordens.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Olá companheiro,
eu não disse isso.
O que eu disse é que o comando ou função de criação de registro automaticamente cria e "trava" o mesmo.
Eu gosto de trabalhar com funções.
Então, simploriamente, considerando que o dbf tem 3 campos caracteres, o esquema seria assim:

cVar1:="TESTE1"
cVar2:="TESTE2"
cVar3:="TESTE3"

USE teste NEW // Usa o arquivo

DBAPPEND() // tenta criar e travar o registro

IF !NETERR() // Se criou e travou o registro preenche os campos
FIELDPUT(1,cVar1)
FIELDPUT(2,cVar2)
FIELDPUT(3,cVar3)
DBCOMMIT()
DBRUNLOCK()
ELSE // Caso contrário
ALERT("Faiou uai!")
ENDIF

...

MarceloG

Ps:
Para testar o que eu disse (deve funcionar).

USE teste NEW // Usa o arquivo

DBAPPEND() // tenta criar e travar o registro

IF !NETERR() // Se criou e travou o registro
IF !RLOCK() // Tenta travar o registro atual já travado
ALERT("Eu disse que tava travado uai!")
ENDIF
ENDIF
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Cara valeu a aula, vou estudar essa maneira de processar os dados e arquivos.

Qualquer coisa, tô às ordens.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Mensagem por clodoaldomonteiro »

Marcelo!
As orientações que voce postou são ótimas e já estou testando-as, mas a função DBRUNLOCK() não existe no clip52, eu encontrei DBUNLOCK(), acho que é a mesma.

E, seguindo o seu raciocínio, pergunto se a função DBUSEAREA() é melhor que o comando USE?

Desde já, agradeço a atenção.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Tá valendo!
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Uma maquina com Windows XP pode sim rodar como servidor.
Como o MarceloG mencionou, teste o dbappend() para ver se ele teve exito. ( if neterr() )
Em alguns casos as funções funcionam melhores que os comandos sim.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder