Método Recordset2.FindFirst (DAO)
Aplica-se ao: Access 2013, Office 2013
Localiza o primeiro registro em um dynaset ou objeto de tipo instantâneo do Conjunto de registros, que atende aos critérios específicos e torna esse registro atual (somente para espaços de trabalho do Microsoft Access).
Sintaxe
expressão . FindFirst(Criteria)
Expressão Uma variável que representa um objeto Recordset2 .
Parâmetros
Nome |
Necessária/opcional |
Tipo de dados |
Descrição |
---|---|---|---|
Criteria |
Obrigatório |
String |
Uma sequência usada para localizar o registro. Ela é como a cláusula WHERE em uma instrução SQL, mas sem a palavra WHERE. |
Comentários
Se você quiser incluir todos os registros na sua pesquisa não apenas aqueles que correspondem a uma condição específica use os métodos Move para mover de um registro para outro. Para localizar um registro em um Recordset tipo tabela, use o método Seek.
Se a correspondência de critérios do registro não for localizada, o indicador do registro atual será desconhecido e a propriedade Nenhuma correspondência será definida como Verdadeiro. Se o conjunto de registros incluir mais de um registro que satisfaça os critérios, o FindFirst vai localizar a primeira ocorrência, o FindNext vai localizar a próxima ocorrência, e assim por diante.
Todos os métodos Find iniciam suas pesquisas a partir do local e na direção especificada na tabela a seguir.
Método Find |
Inicia pesquisa em |
Direção da pesquisa |
---|---|---|
FindFirst |
Início do conjunto de registros |
Fim do conjunto de registros |
FindLast |
Fim do conjunto de registros |
Início do conjunto de registros |
FindNext |
Registro atual |
Fim do conjunto de registros |
FindPrevious |
Registro atual |
Início do conjunto de registros |
No entanto, utilizar um dos métodos Find não é o mesmo que utilizar um método Move, que simplesmente torna atual o primeiro, o último, o anterior ou o próximo registro sem especificar uma condição. A operação Find pode ser seguida pela operação Move.
Sempre verifique o valor da propriedade NoMatch para determinar se a operação Find foi bem-sucedida. Se a pesquisa for bem-sucedida, NoMatch será False. Se ela falhar, NoMatch será True, e o registro atual não será definido. Nesse caso, você deve posicionar o ponteiro atual do registro de volta em um registro válido.
Utilizar o método Find com os conjuntos de registros com acesso ODBC conectados por mecanismo do banco de dados do Microsoft Access pode não ser eficaz. Você poderá constatar que reformular os critérios para localizar um registro específico seja mais rápido, especialmente quando se trabalha com grandes conjuntos de registros.
Ao trabalhar com os bancos de dados com acesso ODBC conectados por mecanismo do banco de dados do Microsoft Access e por grande objetos tipo dynaset do Conjunto de registros, você poderá descobrir que usar os métodos Find ou as propriedades Classificar ou Filtrar é mais lento. Para aprimorar o desempenho, use as consultas SQL com cláusulas ORDER BY ou WHERE personalizadas, consultas de parâmetro ou objetos QueryDef que recuperam registros específicos e indexados.
Você deve usar o formato de data americano (mês-dia-ano) ao pesquisar campos contendo datas, mesmo que não esteja utilizando uma versão em inglês do mecanismo de banco de dados do Microsoft Access; caso contrário, os dados não poderão ser localizado. Use a função Format do Visual Basic para converter a data. Por exemplo:
rstEmployees.FindFirst "HireDate > #" _
& Format(mydate, 'm-d-yy' ) & "#"
Se o critério for composto por uma cadeia concatenada de caracteres e com um valor não inteiro, e se os parâmetros do sistema especificarem um caractere decimal não-EUA, como uma vírgula (por exemplo, strSQL = "PRICE > " & lngPrice, and lngPrice = 125,50), ocorrerá um erro ao tentar chamar o método. Isso acontecerá porque durante a concatenação, o número será convertido em uma sequência que usa o caractere decimal padrão do sistema e o Microsoft Access SQL aceita somente os caracteres decimais do padrão dos EUA.
Observação
- Para melhor desempenho, os critérios* devem estar no formulário "valorde campo = " em que o campo é um campo indexado na tabela base subjacente ou no "prefixo like de campo" em que o campo é um campo indexado na tabela base subjacente e o prefixo é uma cadeia de pesquisa de prefixo (por exemplo, "ART*").
- Em geral, para tipos equivalentes de pesquisa, o método Seek fornece melhor desempenho que os métodos Find. Isso significa que os objetos Recordset tipo tabela sozinhos podem atender às suas necessidades.