|
|
|
|
|
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
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
|
|
|
|
|