USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Banco de Dados)

Título da Dica:  Procurando no Banco de Dados (Find - FindFirst - FindNe
Postada em 8/10/2000 por Webmaster      Clique aqui para enviar email para o autor  webmaster@vbweb.com.br
(DAO)

No DAO, exite o comando FindFirst que faz a procura a partir do início da tabela, achando a primeira ocorrencia daquilo a que está sendo procurado.

'Abre o Recordset e então:
Dim sArg as String
sArg = InputBox ("Por favor, digite o Nome do " &_
                 "Cliente:", "Localizar Nome")
'P/ procurar EXATAMENTE o que foi digitado:
RS.FindFirst "NomeCliente = '" & sArg & "'"

'P/ procurar algum nome que COMECE com o que
'foi digitado:
RS.FindFirst "NomeCliente like '" & sArg & "*'"

'P/ procurar algum nome que TERMINE com o que
'foi digitado:
RS.FindFirst "NomeCliente like '*" & sArg & "'"

'P/ procurar algum nome que tenha o que foi
'digitado em qualquer parte (inicio/meio/fim):
RS.FindFirst "NomeCliente like '*" & sArg & "*'"

If RS.NoMatch then
  'Nenhum registro foi encontrado.
Else
  'Foi encontrado um registro.
Endif
Bom, se algum registro tiver sido encontrado, você poderá pesquizar a próxima ocorrencia (próximo registro que contenha aquele valor procurado no campo que se está sendo feita a pesquiza), usando o comando FindNext:

RS.FindNext "NomeCliente = '" & sArg & "'"
'Ou:
RS.FindNext "NomeCliente like '" & sArg & "*'"
'Ou:
RS.FindNext "NomeCliente like '*" & sArg & "'"
'Ou:
RS.FindNext "NomeCliente like '*" & sArg & "*'"

If RS.NoMatch then
  'Nenhum registro foi encontrado.
Else
  'Foi encontrado um registro.
Endif
Bem, a única coisa que você precisa saber para usar os comandos FindFirst, FindLast, FindNext e FindPrevious, é que o FindFirst faz a procura SEMPRE a partir do início da tabela, que o FindLast faz a procura SEMPRE a partir do fim da tabela e os outros dois (FindNext e FindPrevious) fazem a procura SEMPRE a partir do ponto da tabela em que estão.

(ADO)

No ADO não existe os comandos FindFirst, FindLast, FindNext e FindPrevious, mas existe o comando Find. Usando este comando (Find) você não poderá usar o RS.NoMatch, pois ele não trabalha desta forma. Mas como eu posso fazer procuras do tipo "achar a primeira ocorrencia", "achar a próxima ocorrencia" e etc na minha tabela, sendo que eu só tenho o comando Find??? Bem, veja a sintaxe que você irá entender:

RS.Find "[Campo] = [Valor]", [SkipRows], [Tipo]

Partes da sintaxe:
[Campo] => Campo do banco de dados. O nome deve ser IDENTICO ao que está no banco de dados.
[Valor] => Aquilo que se está procurando.
[SkipRows] => Valor entre 0 e 1. Depende do tipo de procura que está sendo feita.
[Tipo] => Constante que indica como a procura deverá ser feita.

Veja esta tabela para saber o que colocar em [SkipRows] e em
[Tipo] conforme a sua procura:

Método DAO ADO-SkipRows ADO - Search direction
FindFirst 0 adScarchForward (se não estiver posicionado no primeiro registro, execute o MoveFirst antes do Find)
FindLast 0 adScarchBackward (se não estiver posicionado no último registro, execute o MoveLast antes do Find)
FindNext 1 adScarchForward  
FindPrevious 1 adScarchBackward  

Veja um exemplo de FindFirst no ADO usando o comando Find:

'Abre o Recordset e então:
Dim sArg as String
RS.MoveFirst '<<<- MUITO importante!!!
sArg = InputBox ("Por favor, digite o Nome do " &_
                 "Cliente:", "Localizar Nome")
'P/ procurar EXATAMENTE o que foi digitado:
RS.Find "NomeCliente = '" & sArg & "'", adSearchForward

'P/ procurar algum nome que COMECE com o que
'foi digitado:
RS.Find "NomeCliente like '" & sArg & "*'", adSearchForward

'P/ procurar algum nome que TERMINE com o que
'foi digitado:
RS.Find "NomeCliente like '*" & sArg & "'", adSearchForward

'P/ procurar algum nome que tenha o que foi
'digitado em qualquer parte (inicio/meio/fim):
RS.Find "NomeCliente like '*" & sArg & "*'", adSearchForward

If RS.EOF Then
  'Nenhum registro foi encontrado.
Else
  'Foi encontrado um registro.
Endif

Bem, seguindo essa filosofia, veja:

'FindLast:
RS.Find "NomeCliente like '" & sArg & "'", adScarchBackward

'FindNext:
RS.Find "NomeCliente like '" & sArg & "'", 1, adSearchForward

'FindPrevious:
RS.Find "NomeCliente like '" & sArg & "'", 1, adScarchBackward
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página