ERRO NO ACCESS
Tenho uma tabela em access chamada produto e nela um campo chamdo codigo, esse campo esta configurado como numero inteiro. No VB eu uso um código de alto preenchimento na hora de gravar um novo produto, faço o seguinte:
With dtproduto.Recordset
If .RecordCount = 0 Then
txtcodigo = 1
Else
.MoveLast
txtcodigo = !codigo + 1
End If
End With
Só que quando chega + ou - no produto 200-207 começa a dar um erro de duplicação de chave primaria, ou seja o ponteiro não é movido para o último registro assim o programa gera um código ja existente no campo, como a duplicação não é autorizada pois o mesmo é uma chave da esse erro.
A pergunta é como corrijo essa situação?
Obrigado!
With dtproduto.Recordset
If .RecordCount = 0 Then
txtcodigo = 1
Else
.MoveLast
txtcodigo = !codigo + 1
End If
End With
Só que quando chega + ou - no produto 200-207 começa a dar um erro de duplicação de chave primaria, ou seja o ponteiro não é movido para o último registro assim o programa gera um código ja existente no campo, como a duplicação não é autorizada pois o mesmo é uma chave da esse erro.
A pergunta é como corrijo essa situação?
Obrigado!
Cara, a forma mais fácil seria você mudar no access o tipo do campo para autonumeração e deixar o banco controlar a alteração para vc....
Fora isso, seu código parace estar certo, mas vc pode mudar o seu select antes para pegar sempre o maior codigo assim:
sql = "select max(codigo as codigo) from produto"
Abra este sql no seu recordeset e acresecente um ao código, depois faça a gravação...
mas o mais correto e deixar o banco tratar isso para vc....
Espero ter ajudado.
Fora isso, seu código parace estar certo, mas vc pode mudar o seu select antes para pegar sempre o maior codigo assim:
sql = "select max(codigo as codigo) from produto"
Abra este sql no seu recordeset e acresecente um ao código, depois faça a gravação...
mas o mais correto e deixar o banco tratar isso para vc....
Espero ter ajudado.
vou tentar.
Tópico encerrado , respostas não são mais permitidas