PROBLEMAS COM A AUTONUMERACAO

ADRIANOM 09/06/2010 11:12:55
#344328
Estou usando access, mas a autonumeração é feita via código (prefiro)

é o seguinte: estou testando o banco de dados, colocando o máximo de dados (pelo programa).
Quando testo a função de delete, ela obviamente, exclui o registro (vários, mas de um em um); porém, quando vou adicionar um novo registro, ela está repetindo o último código... ou seja.. cria-se um registro com código duplicado....

Onde está o erro?

Sub AutoNumeracao()

If MA.RecordCount = 0 Then
txtSeq.Text = Val(txtSeq.Text) + 1
txtSeq.Text = Format$(txtSeq, [Ô]000000[Ô])
txtCod.Text = txtSeq.Text
Else
MA.MoveLast
txtSeq.Text = Val(MA!Codigo) + 1
txtSeq.Text = Format$(txtSeq, [Ô]000000[Ô])
txtCod.Text = txtSeq.Text
End If

End Sub

Private Sub Form_Load()

AbreBD
Set MA = DB.OpenRecordset([Ô]Select * FROM Mandados[Ô])
Set Data1.Recordset = MA
Data1.Refresh
Call AutoNumeracao

End Sub

Sub Salvar()

If txtNome.Text <> [Ô][Ô] And cmbSecretaria.Text <> [Ô][Ô] And cmbOrgao.Text <> [Ô][Ô] Then

If txtBairro.Text = [Ô][Ô] Then
MsgBox [Ô]Favor cadastrar um novo endereço![Ô], vbCritical, [Ô]JusSoft[Ô]
cmdAddEndereco.SetFocus
Exit Sub
End If


MA.AddNew

MA!Codigo = txtCod.Text
MA!DataRecebimento = txtDTRec.Text
MA!NumAnt = txtAntProcesso.Text
MA!NumNov = txtNvProcesso.Text
MA!NumMand = txtMandado.Text
MA!Secretaria = cmbSecretaria.Text
MA!Nome = txtNome.Text
MA!Endereco = cmbEndereco.Text
MA!Numero = txtNumero.Text
MA!Bairro = txtBairro.Text
MA!Cidade = txtCidade.Text
MA!UF = txtUF.Text
MA!CEP = txtCEP.Text
MA!DataAudiencia = txtDtAudiencia.Text
MA!OutrosAtos = txtOutrosAtos.Text
MA!Custo = txtCusto.Text
MA!Orgao = cmbOrgao.Text

MA.Update
Data1.Refresh

Call AutoNumeracao
Call Limpar
txtDTRec.SetFocus

Else

MsgBox [Ô]Preencha os campos necessários para efetuar o cadastro![Ô], vbCritical + vbOKOnly, [Ô]JusSoft[Ô]

Exit Sub

End If

End Sub

Obrigado
ADRIANOM 09/06/2010 11:47:42
#344347
Gente, desculpe a amolação... era cabeça quente mesmo....
A solução do problema estava na pergunta que fiz.... [Ô]codigo[Ô]

heheh
Basta na dizer ao programa, para iniciar o banco de dados ordenado por código e move-los para o último registro....

basta alterar então:

Set MA = DB.OpenRecordset([Ô]Select * FROM Mandados[Ô])

para

Set MA = DB.OpenRecordset([Ô]Select * FROM Mandados ORDER BY Codigo[Ô])

O resto é a mesma coisa....
Tópico encerrado , respostas não são mais permitidas