Olá a todos!
Há alguns anos eu tinha uma função que auto enumerava reaproveitando números já excluídos.
Acontece que faz tanto tempo que acabei perdendo a danada, acabei criando esta ai embaixo.
Ta bem feinha eu sei, mas se for útil para alguém tai.
Public Function autonumera()
Dim db As Database
Dim rs As Recordset
Dim sql As String
Dim idAnterior As Long
Dim idAtual As Long
Dim idNovo As Long
sql = "Select * from teste order by idTeste"
Set db = CurrentDb()
Set rs = db.OpenRecordset(sql) 'abre o recordset
If rs.EOF = True And rs.BOF = True Then
idNovo = 1
ElseIf rs(0) > 1 Then
idNovo = 1
'Debug.Print idNovo
ElseIf rs(0) = 1 Then
idAnterior = 0
Do While idNovo = 0
idAtual = rs(0)
If idAnterior = idAtual - 2 Then
idNovo = idAtual - 1
Else
idAnterior = idAnterior + 1
rs.MoveNext
End If
Loop
End If
rs.Close
autonumera = idNovo
'MsgBox (autonumera)
End Function
Há alguns anos eu tinha uma função que auto enumerava reaproveitando números já excluídos.
Acontece que faz tanto tempo que acabei perdendo a danada, acabei criando esta ai embaixo.
Ta bem feinha eu sei, mas se for útil para alguém tai.
Public Function autonumera()
Dim db As Database
Dim rs As Recordset
Dim sql As String
Dim idAnterior As Long
Dim idAtual As Long
Dim idNovo As Long
sql = "Select * from teste order by idTeste"
Set db = CurrentDb()
Set rs = db.OpenRecordset(sql) 'abre o recordset
If rs.EOF = True And rs.BOF = True Then
idNovo = 1
ElseIf rs(0) > 1 Then
idNovo = 1
'Debug.Print idNovo
ElseIf rs(0) = 1 Then
idAnterior = 0
Do While idNovo = 0
idAtual = rs(0)
If idAnterior = idAtual - 2 Then
idNovo = idAtual - 1
Else
idAnterior = idAnterior + 1
rs.MoveNext
End If
Loop
End If
rs.Close
autonumera = idNovo
'MsgBox (autonumera)
End Function