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
|
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
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
|
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//
|
|
|
|
|