SE LIVRAR DESTA MSG: NO CURRENT RECORD..NOMATCH..?

VILMARBR 31/05/2005 16:08:58
#86198
Oi,

Alguém sabe como se livrar desta msg: No current record, para o método rs.seek?
Vejam rotina:

Private Sub cmdProcurar_Click()

strBusca = txtProcura.Text

On Error GoTo TratarErro:
'datDistribuidora.EOFAction = 1
datDistribuidora.Recordset.Seek "=", strBusca

TratarErro:
If datDistribuidora.Recordset.NoMatch Then
MsgBox "Registro não encontrado", vbInformation, "Aviso"
txtProcura.Text = ""
txtProcura.SetFocus
' Exit Sub
Else
txtProcura.Text = ""
txtProcura.SetFocus
End If

End Sub

Já olhei tudo sobre este método aqui no msdn usa, mas não diz nada sobre isso:
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/output/F1/D2/S5A2CB.asp

Grato e no aguardo!

Vilmar
JEAN.JEDSON 31/05/2005 16:11:47
#86201
onde acontece o erro, no "If datDistribuidora.Recordset.NoMatch Then "? se for, antes disso coloque um "on error resume next"
USUARIO.EXCLUIDOS 31/05/2005 16:42:08
#86216
apesar de nunca ter usado DAO, creio que seja o seguinte:
o metodo nomatch indica que nao achou nada com a pesquisa, por isso ele emite um aviso e nao uma mensagem de erro(creio eu), e voce colocou ele dentro de uma rotina de tratamento de erro, caso meu pensamento esteja correto ele teria que estar fora do tratamento de erro, assim desviaria a mensagem de erro para sua msgbox.
On Error GoTo TratarErro:

datDistribuidora.EOFAction = 1
datDistribuidora.Recordset.Seek "=", strBusca
If datDistribuidora.Recordset.NoMatch Then
MsgBox "Registro não encontrado", vbInformation, "Aviso"
txtProcura.Text = ""
txtProcura.SetFocus
' Exit Sub
Else
txtProcura.Text = ""
txtProcura.SetFocus
End If

Exit sub
tratarErro:
End Sub
se nao for isto, tudo bem, estou vivendo e aprendendo.
VILMARBR 01/06/2005 11:20:54
#86351
Valeu pessoal!

Willian vc matou a dúvida em cheio!!

Grato mesmo!
VILMARBR 01/06/2005 11:34:55
#86355
Oi pessoal,

Me desculpe, mas no código passado por vcs estava faltando definir o índice e qdo eu coloquei caiu no mesmo erro, vejam com está o código completo:

Private Sub cmdProcurar_Click()

On Error GoTo tratarErro:
datDistribuidora.Recordset.Index = "PrimaryKey"
'datDistribuidora.EOFAction = 0 '>> retirei pois não está mudando em nada a execução com 'qq valor q se coloque!, além do mais isto já fica predefinido no próprio controle em 'design mode
datDistribuidora.Recordset.Seek "=", strBusca
If datDistribuidora.Recordset.NoMatch Then
MsgBox "Registro não encontrado", vbInformation, "Aviso"
txtProcura.Text = ""
txtProcura.SetFocus
' Exit Sub
Else
txtProcura.Text = ""
txtProcura.SetFocus
End If

Exit Sub
tratarErro:
MsgBox "Registro não encontrado Erro: " & Err.Description, vbInformation, "Aviso"

end sub

Grato novamente e no aguardo de nova dica!
VILMARBR 01/06/2005 11:41:42
#86358
OI,

No código que passei faltava a string de busca:
strBusca = CInt(txtProcura.Text)

mas mesmo assim qdo não encontra, ainda mostra a msg. do vb: No current record

o código correto está aqui:

Private Sub cmdProcurar_Click()

On Error GoTo tratarErro:
strBusca = CInt(txtProcura.Text)

datDistribuidora.Recordset.Index = "PrimaryKey"
datDistribuidora.Recordset.Seek "=", strBusca

If datDistribuidora.Recordset.NoMatch Then
MsgBox "Registro não encontrado", vbInformation, "Aviso"
txtProcura.Text = ""
txtProcura.SetFocus
Else
txtProcura.Text = ""
txtProcura.SetFocus
End If

Exit Sub
tratarErro:
MsgBox "Registro não encontrado Erro: " & Err.Description, vbInformation, "Aviso"

End Sub


grato novamente
Tópico encerrado , respostas não são mais permitidas