USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  BLOQUEIO DE REGISTRO PARA EDICAO/GRAVACAO
ventana
SANTOS
SP - BRASIL
ENUNCIADA !
Postada em 22/03/2010 19:24 hs            
Boa Noite Amigos
Criei uma rotina onde irei gerar um numero automatico de fatura.Toda vez que for gravar a fatura eu pesquisarei uma tabela que contem a numeracao e entao pegarei esse numero e somarei +1, para ter o proximo numero de fatura.
Entretanto o meu sistema roda em rede, portanto pode ser que mais de um usuario mande gravar ao mesmo tempo, portanto eu gostaria de bloquear o registro dessa tabela que contem o contador para que mais ninguem pudesse utilizar o numero que um usuario pegar em determinado momento, para evitar e claro 2 faturas com o mesmo numero.
Estou usando o VB6 com SQL Express 2005.
 
Obrigado e um Abraco
   
J.Carlos
Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 23/03/2010 14:23 hs            
Eu faço sempre assim: só pego o último número na hora de gravar, somo 1 e gravo. Como geralmente este número faz parte da chave primária, dificilmente ocorrerá duplicidade. Além disso, voce poderá usar a leitura no modo pessimista:
private sub Gravar()
    on error goto Erro
    Tabela.Open "Select max(numero) as Numero from Minhatabela", RsDados, adOpenKeyset, adLockPessimistic, adCmdText
    wNumero = Tabela!Numero + 1
    Tabela.Open "Insert into Minhatabela (numero,nome) values(" & wnumero & ",'" & txtnome.text & "')", RsDados, adOpenKeyset, adLockPessimistic, adCmdText
    exit sub
Erro:
    msgbox "Erro: " & err.description
End Sub
'O exemplo acima é usando ado
   
ventana
SANTOS
SP - BRASIL
ENUNCIADA !
Postada em 23/03/2010 16:31 hs            
Obrigado por sua ajuda J.Carlos
No meu caso eu nao posso usar a chave primaria porque ja vou começar de uma numeracao especifica e todas as filiais da empresa no Brasil deverao seguir essa numeracao.
 
Vou analisar o seu exemplo.
 
Obrigado e um Abraço
   
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 24/03/2010 10:32 hs            
Este caso, poderá sempre ocorrer uma duplicidade, ou gerar um erro.
Fiz um POG, deu certo estou usando.
Coloque um campo integer no seu BD, grave 0 (zero) quando alguém pegar o número sequencial, vc grava neste campo, + 1, o próximo vai verificar o número, e verifica este campo e soma ao numero sequencial, e grava neste campo +1, após a gravação, grave -1.
Está dando certo, vamos ver até quando.
 
vlu//
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página