Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta Com "order By" Não Funciona


Khufu

Pergunta

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

  • 0

Cara, nome não é legal para PK, não tem como tu criar um código, alguma coisa assim... quando tu procura por where nome = ... ele deve retornar apenas um registro pois, como tu mesmo falou, ele é chave primária, ou seja, sem duplicação autorizada... Acho que esse é o teu maior problema...

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...