Caros Amigos Bom Dia
Estou com um problema para resolver com urgencia mais não estou acertando fazer gostaria de ajuda, tenho um sistema em clipper que funciona a mais de 5 anos beleza e uma unica maquina so que agora foi preciso colocar este sistema em rede blz, o unico problema que estou tendo e com o programa de inclusão porque gero um numero sequencial e quando coloque em rede este numero estar seperdendo ou duplicando como faço para geral este numero sequiencia em varias estações ao mesmo tempo sem sai da sequiencia.
Fico grato com quem puder mem ajudar
FELIZ NATAL PARA TODOS
Incluindo em em varias marquinas ao mesmo tempo
Moderador: Moderadores
-
Everton
- Usuário Nível 3

- Mensagens: 143
- Registrado em: 07 Jul 2004 08:53
- Localização: Campo Grande - MS
Olá.
Pode ser feito assim. na hora de começar o cadastro ele pega o ultimo numero gravado no DBF e armazena na mémoria, depois do cadastro ter terminado vc antes de gravar no DBF verifica se existe este numero se existir some mais 1 e verifica novamente, até não existir, ai sim vc grava os dados. pelo mens eu trabalho assim e nunca me deu problema
Feliz Natal a Todos amigos do forum
Pode ser feito assim. na hora de começar o cadastro ele pega o ultimo numero gravado no DBF e armazena na mémoria, depois do cadastro ter terminado vc antes de gravar no DBF verifica se existe este numero se existir some mais 1 e verifica novamente, até não existir, ai sim vc grava os dados. pelo mens eu trabalho assim e nunca me deu problema
Feliz Natal a Todos amigos do forum
Everton Luiz Penteado
Clipper 5.2b - Blink 7.0
Clipper 5.2b - Blink 7.0
Olá,
Aqui em nossos sistemas quando precisamos fazer algo desse tipo usamos um código parecido com o seguinte:
Colocamos isso antes de dar os appends opis assim nunca vai gravar nada duplicado.
Espero ter ajudado
Aqui em nossos sistemas quando precisamos fazer algo desse tipo usamos um código parecido com o seguinte:
Código: Selecionar todos
If Acao = 1
While DBCHC001->( DbSetOrder(1), DbGoTop(), DbSeek(MCD_FIL+MNR_CNH) )
Mens("Procurando próximo conhecimento",1)
MNR_CNH := StrZero(Val(DBCHC001->NR_CNH)+1,6,0)
@ 04,41 Say MNR_CNH Picture "@K 999999" Color Cor_Jan1
EndDo
GeVar1("DBCHC001","REP")
Else
DBCHC001->( DbSetOrder(1), DbGoTop(), DbSeek(MCD_FIL+MNR_CNH) )
EndIf
DBCHC001->( DbUnLock() )Espero ter ajudado
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinhos
Quando se fazer uma inclusão em rede não é de praxe colocar código sequencial em registros no inicio do cadastro. Isto só é aplicavel no caso de relações, ex:
Cadastrar cliente:
Abre arquivo de clientes
Zera suas variaveis
Acrecenta via Gets
Pega numero de registros sequencial
Salva registro
Cadastro de itens:
Pega um numero temporario na tebela de numeros temporarios
Abre arquivo de pedidos
Abre arquivo de itens
Zera suas variaveis
Acrecenta via Gets
Salva registro
Ao finalizar o pedido
Pega numero de pedido valido na tabela de numeros de pedidos
Salva registro de pedido
Repassa o codigo dos itens de temporario para pedido valido.
Resumindo o que voce precisa é ter uma tabela de controle que tenha o codigo temporario que serve para qualquer inclusão e uma tabela de controle de pedidos.
Faça uso de minha função de autonumeração. com ela voce tera pleno controle de todos os codigo gerados em seu aplicativo.
Exemplos:
Incluindo clientes:
use clientes
...
idcliente := PsqControle( "clientes" )
salva registro
Incluindo produtos:
use produtos
...
idcliente := PsqControle( "produtos" )
salva registro
É uma função muito simples, pois devolve um numero sequencial iniciado em 1 e controlando-o perfeitamente, bastando para isto passar o nome do .DBF ou palavra de controle, exemplo:
idcodigo := PsqControle( "orcamento" )
idcodigo := PsqControle( "pedidos" )
idcodigo := PsqControle( "teste" )
Então para o seu uso faça assim:
Abre arquivo de clientes
Zera suas variaveis
idcliente := PsqControle( "temporario" )
Acrecenta via Gets
idcliente := PsqControle( "clientes" )
Salva registro
Pegue na sessão código fonte
@braços :?)
Quando se fazer uma inclusão em rede não é de praxe colocar código sequencial em registros no inicio do cadastro. Isto só é aplicavel no caso de relações, ex:
Cadastrar cliente:
Abre arquivo de clientes
Zera suas variaveis
Acrecenta via Gets
Pega numero de registros sequencial
Salva registro
Cadastro de itens:
Pega um numero temporario na tebela de numeros temporarios
Abre arquivo de pedidos
Abre arquivo de itens
Zera suas variaveis
Acrecenta via Gets
Salva registro
Ao finalizar o pedido
Pega numero de pedido valido na tabela de numeros de pedidos
Salva registro de pedido
Repassa o codigo dos itens de temporario para pedido valido.
Resumindo o que voce precisa é ter uma tabela de controle que tenha o codigo temporario que serve para qualquer inclusão e uma tabela de controle de pedidos.
Faça uso de minha função de autonumeração. com ela voce tera pleno controle de todos os codigo gerados em seu aplicativo.
Exemplos:
Incluindo clientes:
use clientes
...
idcliente := PsqControle( "clientes" )
salva registro
Incluindo produtos:
use produtos
...
idcliente := PsqControle( "produtos" )
salva registro
É uma função muito simples, pois devolve um numero sequencial iniciado em 1 e controlando-o perfeitamente, bastando para isto passar o nome do .DBF ou palavra de controle, exemplo:
idcodigo := PsqControle( "orcamento" )
idcodigo := PsqControle( "pedidos" )
idcodigo := PsqControle( "teste" )
Então para o seu uso faça assim:
Abre arquivo de clientes
Zera suas variaveis
idcliente := PsqControle( "temporario" )
Acrecenta via Gets
idcliente := PsqControle( "clientes" )
Salva registro
Pegue na sessão código fonte
@braços :?)
Eu Utilizo um DBF com um único campo que controla os códigos de todos os cadastros, esse DBF possui vários registros que são acessados através de uma função que vc chama na hora de gerar o código, passando o parâmetro, por ex: NewCodigo(2) vai acessar o segundo registro que possui o último código gerado para determinado módulo. Preencho todo o formulário de entrada de dados e somente no final, quando o usuário mandar gravar o registro, chamo essa função que trava o DBF e acrescenta um no último código gerado e em seguida libera-o novamente.
