Oi. Tô aqui de novo, enchendo a paciência de vocês...
No exemplo abaixo, consulto um CPF e o sistema me retorna a informação da quantidade de declarações por CPF. Só que a instrução <tabela.moveNext> antes do Loop abre o próximo registro após o último registro encontrado. Daí, tenho de voltar para o registro anterior, onde então localizo o último que satisfez o critério da consulta... Já tentei modificar a consulta, mas se tiro a instrução <tabela.MoveNext>, o sistema não funciona...
Eis o código da consulta. Se alguém puder descobrir o furo, agradeço a colaboração...
Private Sub cmdConsultarCPF_Click()
Set BancoDeDados = OpenDatabase(App.Path & "Contribuinte.mdb")
Set Tabela = BancoDeDados.OpenRecordset("Fisica", dbOpenTable)
Dim ProcuraCPF As String, Contador As String
Tabela.Index = "CPF"
ProcuraCPF = InputBox("Digite o número do CPF:" & Chr(13) & _
"Obs.: não utilize pontos nem hífen.", "Procura pelo CPF")
If ProcuraCPF = "" Then 'Se não digitar nada,
cmdOrganizar.Visible = True 'Cancela a procura e
cmdOrganizar_Click 'Reorganiza a tabela.
cmdOrganizar.Visible = False
Exit Sub
Else
Tabela.Seek "=", ProcuraCPF
If Tabela.NoMatch = False Then
Contador = 0
Do While Not Tabela.EOF
If Tabela!CPF = ProcuraCPF Then
Contador = Contador + 1
Else
Exit Do
End If
Tabela.MoveNext
Loop
MsgBox Str(Contador) & " registros encontrados."
AtualizaFormulario
cmdPrimeiro.Enabled = False
cmdUltimo.Enabled = False
cmdOrganizar.Visible = True
cmdProximo.SetFocus
Else
MsgBox "Não foram encontrados registros" & Chr(13) & _
"para o CPF (" & ProcuraCPF & ").", vbInformation
cmdOrganizar.Visible = True
cmdOrganizar_Click
cmdOrganizar.Visible = False
AtualizaFormulario
End If
End If
End Sub