Acesso BD Access via ADO. Gravo os dados no BD por ordem de registro, sendo que o campo "nome" é a chave primaria do campo devidamente indexada e com duplicação não autorizada. O usuario digita um nome em uma TextBox clica em "Consultar" que carrega uma variavel em executa a rotina.
Tenho a rotina de "consulta" do BD, que carrega os dados correspondentes a variavel testada na rotina. Até ai beleza. O problema é o seguinte: se eu deixo o "rs.Open" da consulta com "where nome", efetuo a consulta e clico em "proximo" ele me diz que o BD esta em EOF; e se eu clico em "anterior" ele diz que o BD esta em BOF. Se eu coloco o "rs.Open" com "order by nome ", efetuo a consulta e clico em "proximo" ele mostra os registro do BD só que sem ordem nenhuma, vai mostrando os dados aleatoriamente; se eu clico em "anterior" ele diz que o nome consultado esta em BOF. já tentei colocar no fim da rotina de consulta um BOF=False e EOF=False só que ele não aceita. Não sei mais o que fazer será que alguém saberia me dizer onde eu estou pecando.
Segue abaixo os respectivos códigos.
'-----------ROTINA DE CONSULTA------------------(*.bas)
Public Function Consultar(ByVal strNome As String) As Variant
Set rs = CreateObject("ADODB.Recordset")
With rs
.Open "select * from Contatos order by nome=" & strNome & "", cn, adOpenKeyset, adLockBatchOptimistic
Pergunta
Khufu
Oi pessoal ! Tudo bem
Acesso BD Access via ADO. Gravo os dados no BD por ordem de registro, sendo que o campo "nome" é a chave primaria do campo devidamente indexada e com duplicação não autorizada. O usuario digita um nome em uma TextBox clica em "Consultar" que carrega uma variavel em executa a rotina.
Tenho a rotina de "consulta" do BD, que carrega os dados correspondentes a variavel testada na rotina. Até ai beleza. O problema é o seguinte: se eu deixo o "rs.Open" da consulta com "where nome", efetuo a consulta e clico em "proximo" ele me diz que o BD esta em EOF; e se eu clico em "anterior" ele diz que o BD esta em BOF. Se eu coloco o "rs.Open" com "order by nome ", efetuo a consulta e clico em "proximo" ele mostra os registro do BD só que sem ordem nenhuma, vai mostrando os dados aleatoriamente; se eu clico em "anterior" ele diz que o nome consultado esta em BOF. já tentei colocar no fim da rotina de consulta um BOF=False e EOF=False só que ele não aceita. Não sei mais o que fazer será que alguém saberia me dizer onde eu estou pecando.
Segue abaixo os respectivos códigos.
'-----------ROTINA DE CONSULTA------------------(*.bas)
Public Function Consultar(ByVal strNome As String) As Variant
Set rs = CreateObject("ADODB.Recordset")
With rs
.Open "select * from Contatos order by nome=" & strNome & "", cn, adOpenKeyset, adLockBatchOptimistic
If frmCont.txtNome = "" Then
MsgBox "Digite um Nome !"
frmCont.txtNome.SetFocus
Else
frmCont.txtNome = IIf(IsNull(!nome), Empty, !nome)
frmCont.txtTelefone = IIf(IsNull(!telefone), Empty, !telefone)
frmCont.txtCelular = IIf(IsNull(!celular), Empty, !celular)
frmCont.txtEmail = IIf(IsNull(!email), Empty, !email)
End If
End With
End Function
'------------------------------------
'-------PROXIMO-----------------(*.frm)
Private Sub cmdProx_Click()
rs.MoveNext
If rs.EOF = True Then
rs.MoveLast
MsgBox "Fim dos Contatos!"
End If
txtNome = rs!nome
txtTelefone = rs!telefone
txtCelular = rs!celular
txtEmail = rs!email
Call barra
End Sub
'------------------------------------
'---------ANTERIOR-------------------(*.frm)
Private Sub cmdAnt_Click()
rs.MovePrevious
If rs.BOF = True Then
rs.MoveFirst
MsgBox "Inicio dos Contatos"
End If
txtNome = rs!nome
txtTelefone = rs!telefone
txtCelular = rs!celular
txtEmail = rs!email
Call barra
End Sub
'------------------------------------------
Agradeço desde já a atenção !
Khufu
www.nulo.kit.net
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.