Convidado 16/6/2011, 13:54
Caro Alexandre, bom dia.
Apliquei o código que fez para mim e funcionou perfeitamente para gravar novos registros com numeração subsequente.. Eis como ficou:
Private Sub btnNovo_Click()
'On Error GoTo Err_btnNovo
Parametros_de_Inicializacao "SysPen.par"
Dim Db As DAO.Database
Dim ws As DAO.Workspace
Dim rs As DAO.Recordset
Dim NomeBD As String
Dim StrPath As String
Dim I, II
NomeBD = "Syspen_Be.Accdb" 'Váriável para o nome do BD
StrPath = DirBancoDados & NomeBD 'Váriável para Caminho contido no Arquivo de Parâmetros + Variável do Nome do BD (C:\Syspen\Syspen_Be.Accdv)
If Me.txtID.Value = "" Then GoTo Continuar
If Not IsNull(Me.txtID) Then
II = MsgBox("ESTE REGISTRO JA EXISTE!", vbCritical, "Atenção!")
Call LimpaCampos
Cancel = True
Exit Sub
Continuar:
Else
'Verifica se o campo codFunc está nulo. Se estiver
'significa que é um novo registro.
If IsNull(txtID) Then
'Atribui ao campo o próximo númerosubsequente dentro
'do campo ID na tabela Detentos.
Me.txtID.Value = NumeroLivre1("ID", "Detentos", StrPath) 'Aqui recebe a váriável do Caminho completo (StrPath)
No entanto Amigão precisaria que na função corresse a seguinte rotina.:
Function NumeroLivre(argTabela As String, argCampo As String) As Long
Dim I As Long
I = 0
Do
I = I + 1
'Verifica se existe no campo e tabela informados o valor
'atual da variável de contagem.
If IsNull(DLookup(argCampo, argTabela, argCampo & "=" & I)) Then
'Se não existir retorna o valor
NumeroLivre = I
Exit Function
End If
Loop
End Function
** Esta função do outro código procura na tabela Detentos algum número vago anterior ao último registros, caso exista grava o novo registro com esse núimero ex:
1
2
.... 'Grava o novo registro com o número 3 (caso não haja lacunas na numeração sequencial grava o próximo número depois do último
4
5
Podeendo ajudar, fico-lhe imensamente Grato
Saudaçãoes