Página 1 de 1
Registros perdidos na Rede
Enviado: 18 Set 2007 10:02
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.
Enviado: 18 Set 2007 11:10
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.
Enviado: 18 Set 2007 11:52
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
Enviado: 18 Set 2007 16:12
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
Enviado: 18 Set 2007 17:09
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
Enviado: 18 Set 2007 17:39
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!
Enviado: 18 Set 2007 18:05
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.
Enviado: 19 Set 2007 09:50
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
Enviado: 19 Set 2007 10:00
por clodoaldomonteiro
Cara valeu a aula, vou estudar essa maneira de processar os dados e arquivos.
Qualquer coisa, tô às ordens.
Enviado: 19 Set 2007 11:22
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.
Enviado: 19 Set 2007 11:37
por MARCELOG
Tá valendo!
Enviado: 19 Set 2007 12:32
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.