O modo como muitos de nós programamos do MS Access, utilizamos o DAO, acaba por nos expor a alguns erros peculiares com o quais precisamos aprender a lidar.
Um destes é o erro 3021 - Run-time error 3021:
Se o BOF ou EOF for VERDADEIRO, ou o registro atual for eliminado, a operação solicitada requer um registo atual.
Seguindo o padrão "Microsoftniano" poderíamos analisar o erro sobre os seguintes aspectos: Sintomas, Ponto da situação, Como contornar.
SINTOMASEste erro ocorre quando o recordset está vazio.
SITUAÇÃOEste é um problema conhecido (SMR 21204) e será resolvido num FRx Service Pack futuro.Atribuições de Service Pack não são uma garantia e podem ser alteradas a qualquer momento.
CONTORNARUma solução simples é a de checar se está no final da tabela antes de executar o processo:
if rsBaseDados.EOF=false thenrotinaend if
Normalmente adiciono um tratamento do erro para enganar o processo e dar continuidade ao processamento:
Public Function QueryRecord()
On Error GoTo ErrorHandler
' Seu código fica aqui
ErrorHandlerExit:Exit Sub
ErrorHandler:If Err = 3021 Then ' Sem registro corrente
Resume Next
Else
MsgBox "Erro Nº: " & Err.Number & "; Descrição: " & Err.DescriptionResume ErrorHandlerExit
End If
End Function
Nenhum comentário:
Postar um comentário