BUG COM ACCESS

HIDDEN 18/02/2011 11:33:50
#365863
Tópicos com [Ô]Bug em Access[Ô] devem existir aos milhares. Mas estou me debatendo com um problema a mais de 2 dias, e estou quase desistindo. Estou usando um banco de dados Access. Até migrei para a versão 2010 (.accdb), importei as tabelas, mas o maldito bug persiste.

Acontece o seguinte: tenho uma tabela, cujo código não está em auto-numeração (e precisa ser assim). Quando vou salvar um registro, verifico qual o último código cadastrado e adiciono +1. O código base é o seguinte:


tblDados.Open Tabela, Conn, adOpenStatic, adLockOptimistic
If Not .EOF Then
.MoveLast
IDSave = (!Codigo + 1)
Else
IDSave = 1
End If
.AddNew


O problema: supondo que meu último registro seja o de número 22 (!Codigo=22), IDSave seriía igual a 23. Acontece que (!Codigo + 1), sendo !Codigo=22, da 22, e não 23. Já deletei os registros da tabela. Começo a recadastrar, e, em determinado momento, o maldito erro. Obs.: não da o erro sempre no mesmo registro. Pode ser no quarto, décimo, etc.

Isso aconteceu uma vez, a uns 2 anos atrás. Mas bastou eu reparar a base de dados. Desta vez, nem a pau.

Alguém já vivenciou esta situação?
LUIZCOMINO 18/02/2011 11:45:12
#365865
o campo no acces esta como numerico?

tente sql=[Ô]select id from tabela order by desc[Ô]

id= rs.id +1
FNANDOOD 18/02/2011 14:58:33
#365887
Quando você move par ao fim .movelast, será que ele não vai para uma linha em branco?

verifique o valor do campo código do último registro

da um msgbox !codigo pra verificar se o campo código tem algum valor

tblDados.Open Tabela, Conn, adOpenStatic, adLockOptimistic
If Not .EOF Then
.MoveLast
msgbox !codigo





IDSave = (!Codigo + 1)
Else
IDSave = 1
End If
.AddNew
MORDENTI 18/02/2011 15:55:03
#365894
Boa tarde,

Amigo acredito que o seu problema esteja no tipo de variavel usado, seu campo no bd deve ser texto e tal soma o vb não aceita, acredito que se você usar a Função cdbl(nomedorecordset!nomedocampo) irá ocorrer bem.


Espero poder ter ajudado.

TODAY IS BEER DAY


HIDDEN 18/02/2011 16:09:28
#365899
é um bug do Access mesmo. Exportei a tabela para uma base MySQL e rodei o programa, acessando o banco com ADO (MySQL ODBC 5.1 Driver) e rodou perfeitamente.
LUIZCOMINO 19/02/2011 11:09:12
#365957
mas o campo no access está como numerico?
MARCOSLING 19/02/2011 15:05:52
#365975
Aparentemente, o problema não parece ser do access...
Já tentou armazenar o valor na variável e depois somar?

O seu código para pegar a sequencia não é muito usual... eu prefiro usar uma tabela de sequencias ou auto-numeração.
MARCELO.TREZE 19/02/2011 20:56:14
#365995
HiDDEN se no mysql funciona perfeitamente, então colega não pense duas vezes para mudar, access é bom até certo limite.

Tópico encerrado , respostas não são mais permitidas