PROBLEMAS COM A AUTONUMERACAO
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
é 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
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....
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