vieirasoft 6/1/2011, 15:46
utilizei uma vez esse exemplo (postado pelo Dilson) e não deu certo, nunca me preocupei em averiguar o porquê, agora já sei.
Existem inúmeros exemplos válidos como o que postei encima ou outros mais como estes
Public Function Contador(strCampo As String, NomeTabela As String) As Long
Dim strSQL As String, rkt As DAO.Recordset
strSQL = "SELECT Max" & "(" & strCampo & ")" & " As MaxValor"
strSQL = strSQL & " FROM " & NomeTabela
Set rkt = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenForwardOnly)
Contador = Nz(rkt("MaxValor")) + 1
rkt.Close: Set rkt = Nothing
End Function
Para chamar a função, no evento do antes de inserir do seu formulário:
Me.MeuCampo = Contador(“MeuCampoContador”, “MinhaTabela”)
Para chamar a função, no evento corrente do seu formulário:
Private Sub Form_Current()
'Se está em um novo registro gera o número de serie
If Me.NewRecord Then
Me.SeuCampoContador = ContadorSimples("SeuCampo","SuaTabela")
End If
End Sub
2) Função Alfanumérica
Public Function ContaRegistro(strCampo As String, NomeTabela As String) As String
Dim strMax As String
strMax = DMax(strCampo, NomeTabela)
ContaRegistro = "AM-" & Right(strMax, Len(strMax) - InStr(1, strMax, "-")) + 1
End Function
Função Contador Simples
Public Function ContadorSimples(strCampo As String, NomeTabela As String) As Long
Dim strMax As Long
strMax = DMax(strCampo, NomeTabela)
ContadorSimples = Nz(strMax) + 1
End Function