CODIGO SEQUENCIAL AUTOMATICO
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?
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?
Se você criar o código apenas na hora de gravar os dados, evita esse problema.
Veja minha sugestão neste tópico
Veja minha sugestão neste tópico
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.
À 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.
Você pode utilizar uma Store Procedure no banco para gerar o código automaticamente, assim o MYSQL gerencia sem ser autoincremento.
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!!!
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!!!
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