CODIGO SEQUENCIAL AUTOMATICO

JONESPARIS 31/03/2010 19:52:47
#338343
Boa Noite amigos!!

Estou gerando automaticamente um código sequencial quando gravo um registro em meu banco Mysql da seuinte maneira:

Dim NovoCódigo As Double
Dim rs As ADODB.Recordset
Dim sql As String
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
rs.Open [Ô]select * from ultimoscodigos[Ô], conn, adOpenStatic, adLockOptimistic, adCmdText [ô] usado para pegar o novo código
NovoCódigo = rs!Colaboradores
NovoCódigo = NovoCódigo + 1
rs.Close
rs.Open [Ô]UPDATE ultimoscodigos SET Colaboradores = [Ô] & NovoCódigo & [Ô] , conn, adOpenStatic, adLockOptimistic, adCmdText [ô] usado para pegar o novo código
Text2.Text = NovoCódigo


Até aí tudo bem, gera o código certinho, porém quando existem dois usuários em máquinas diferentes, que clicam no novo ao mesmo tempo, ele gera o mesmo código nas duas!!!

alguém tem alguma sugestão de como posso gerar um novo código sem usar o Autoincremento do próprio Mysql?

ROBIU 31/03/2010 20:26:16
#338345
Se você criar o código apenas na hora de gravar os dados, evita esse problema.
Veja minha sugestão neste tópico
TECLA 02/04/2010 08:40:37
#338415
Uma outra dica, é criar uma nova TABELA que armazene o ULTIMO_CODIGO_SEQUENCIAL gerado para alguma máquina.
À cada solicitação, você INCREMENTA este valor, faz o UPDATE na tabela e só assim DEVOLVE para quem solicitou.

Faça o teste em AMBIENTE DE REDE e veja se resolve.
JESUEL.OLIVEIRA 02/04/2010 14:46:13
#338431
Você pode utilizar uma Store Procedure no banco para gerar o código automaticamente, assim o MYSQL gerencia sem ser autoincremento.
JONESPARIS 05/04/2010 08:25:01
#338551
Pessoal, preciso gerar o novo código quando clicar em Novo... não no gravar...

Tecla, eu criei uma tabela que armazena o último código, se olhar na minha sql ele está lá....

Agora, vou fazer alguns testes com Store Procedure para ver se funciona..

Obrigado, se alguém tiver mais alguma sugestão... agradeço!!!
EDERMIR 05/04/2010 09:00:31
#338555
Não sei se funciona, mas...

rs.Open [Ô]UPDATE ultimoscodigos SET Colaboradores = (select max(Colaboradores) + 1 as NovoCódigo from ultimoscodigos)[Ô] , conn, adOpenStatic, adLockOptimistic, adCmdText
Tópico encerrado , respostas não são mais permitidas