Amigos Clippeiros,
Tenho um sistema relativamente pesado em clipper 5.3 + blinker + CDX + w2k server, ele tem um DBF principal que hoje está com aprox 400MB e 1.200.000 registros, tudo está funcionando normalmente nos acessos da rede em todas as rotinas.
Porém ultimamente vem acontecendo um problema que não consegui solucionar, o cenário é o seguinte :
São vários computadores cadastrando clientes ao mesmo tempo, uso arquivos .mem para controlar a autonumeração do código dos clientes e orçamentos, abro o .mem, pego o nro atual, adiciono +1 no nro, e gravo. o problema é que algumas vezes na semana está dando uma duplicidade, acho que por ser vários cadastrando ao mesmo tempo, coicide o milisegundo exato da gravação do .mem de 2 ou 3 terminais ao mesmo tempo e grava errado.
Gostaria de saber como vocês fazem pra controlar autonumeração? (sem usar recno() ou go bottom)
Desde já agradeço.
Duplicidade
Moderador: Moderadores
- Augusto
- Usuário Nível 3

- Mensagens: 473
- Registrado em: 26 Ago 2003 17:50
- Localização: Maricá/RJ
- Contato:
Amigo eu faço exatamente como vc... só que eu uso um DBF só p/ controlar a numeração.
Abro com RLOCK(), pego o número jogo p/ memória, incremento 1 e gravo, UNLOCK para o próximo usuário...
Caso o numero não seja usado... eu dou como perdido...
Comigo funciona... não se vai te ajudar...
Abro com RLOCK(), pego o número jogo p/ memória, incremento 1 e gravo, UNLOCK para o próximo usuário...
Caso o numero não seja usado... eu dou como perdido...
Comigo funciona... não se vai te ajudar...
Editado pela última vez por Augusto em 18 Mar 2005 10:52, em um total de 1 vez.
:xau Fui...
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
-
Hasse
- Usuário Nível 4

- Mensagens: 820
- Registrado em: 19 Out 2004 10:30
- Localização: Jaraguá do Sul - SC
Bom dia amigos.
Eu uso da seguinte forma:
ARQLOCK()
&&................. nenhum outro usuário tem acesso ao arquivo para fazer alterações.
APPEND BLANCK
UNLOCK
&& .................liberar o arquivo para todos os usuários.
4) RLOCK()
&& .................para o usuário local fazer o seu trabalho.
5) UNLOCK
&& .................Libera o registro.
6) DBCOMMIT()
&& .................Dá visibilidade do dados à rede.
Os 4 primeiros comandos efetuam as operações muito rapidamnente. Nem se percebe o que está ocorrendo.
Fizemos vários teste preparando 5 terminais para fazerem a solicitação ao mesmo tempo, e a um comando todos os 5 foram acionados, os 5 novos registros foram adicionados, e somente um ou dois chegam a fazer a 2ª tentativa (ver abaixo, a explicação 'tentativas').
Observação: Para os comandos ARQLOCK(), APPEND BLANCK, RLOCK() uso funções que eu criei, que fazem 10 tentativas, uma a cada 0,5 segundo, e somente depois retornam mensagem informando o ocorrido para que seja tomada a decisão pertinente.
O sistema está rodando fazem 8 anos e ainda não tive qualquer número duplicado.
Espero ter contribuído com algum detalhe.
Hasse.
Eu uso da seguinte forma:
ARQLOCK()
&&................. nenhum outro usuário tem acesso ao arquivo para fazer alterações.
APPEND BLANCK
UNLOCK
&& .................liberar o arquivo para todos os usuários.
4) RLOCK()
&& .................para o usuário local fazer o seu trabalho.
5) UNLOCK
&& .................Libera o registro.
6) DBCOMMIT()
&& .................Dá visibilidade do dados à rede.
Os 4 primeiros comandos efetuam as operações muito rapidamnente. Nem se percebe o que está ocorrendo.
Fizemos vários teste preparando 5 terminais para fazerem a solicitação ao mesmo tempo, e a um comando todos os 5 foram acionados, os 5 novos registros foram adicionados, e somente um ou dois chegam a fazer a 2ª tentativa (ver abaixo, a explicação 'tentativas').
Observação: Para os comandos ARQLOCK(), APPEND BLANCK, RLOCK() uso funções que eu criei, que fazem 10 tentativas, uma a cada 0,5 segundo, e somente depois retornam mensagem informando o ocorrido para que seja tomada a decisão pertinente.
O sistema está rodando fazem 8 anos e ainda não tive qualquer número duplicado.
Espero ter contribuído com algum detalhe.
Hasse.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
-
Dudu_XBase
- Membro Master

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
Visitem tb este tópico....
https://pctoledo.org/forum/viewtopic.php?t=862
https://pctoledo.org/forum/viewtopic.php?t=862
________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle
