Bom, tente fazer o seguinte:
1) Não precisa abrir o BD toda vez, abra somente uma vez ao carregar o sistema. Ou no evento load do form principal ou em uma Procedure dentro do módulo:
Sub Conecta()
Set BancodeDados = OpenDatabase(App.Path & "Dados.Mdb", False, False)
End Sub
2) Uma funcão retorna valores então pra usar um código q não retornará nada use uma Procedure:
Sub GravaRegistro()
...
End Sub
3) Vamos aos conflitos... pelo q percebi vc grava o número do registro da pessoa. Provavelmente uma chave q identifica este registro certo? Bom Não sei como vc gera isto mas tente fazer assim: crie uma tabela => 'TB_RegBatismo'
Nesta tabela vc vai gravar um campo q será o registro da tabela TBCadBatismo.
Cada vez q for gravar vc vai ler este registro, vai incrementá-lo (somar + 1), vai gravar na tabela e jogar o valor numa variável. Assim:
Set RsTemp = BancodeDados.OpenRecordset("TBRegBatismo")
IF NOT RsTemp.EOF Then variavel = RsTemp(0) 'digamos q "variavel" seja igual a 5
variavel = variavel + 1
'Atualização do numero do registro incrementado na tabela TBRegBatismo. Sendo NumRegistro tipo numérico
BancodeDados.Execute "UPDATE TBRegBatismo SET NumRegistro = " & variavel
call GravarDados(variavel)
Sub GravarDados(byval NumeroReg as long)
TBCadBatismo.AddNew
TBCadBatismo![Registro] = NumeroReg
...
TBCadBatismo.Update
End Sub
Ok??
Para controlar isso vc pode passar o seu sistema para ADO. Vc abre a tabela com um LockType tipo adLockOptimistic:
'Creio q seja assim:
SeuRecordsetADO.Open "Select * From Tabela",SuaConexao,adOpenKeySet,adLockOptimistic
Acho q não terá problemas.
qq dúvida é só postar
t+