Localizar um registro em um Conjunto de Registros de DAO do tipo tabela
Você usa o método Seek para localizar um registro em um objeto Recordset do tipo tabela.
Quando você usa o método Seek para localizar um registro, o mecanismo de banco de dados do Access usa o índice atual da tabela, conforme definido pela propriedade Index.
Observação
Se você usar o método Seek em um objeto Recordset do tipo tabela sem antes definir o índice atual, ocorrerá um erro de tempo de execução.
O exemplo a seguir abre um objeto Recordset do tipo tabela denominado Employees e usa o método Seek para localizar o registro que contém um valor de lngEmpID no campo EmployeeID. Ele retorna a data de contratação do funcionário especificado.
Function GetHireDate(lngEmpID As Long) As Variant
Dim dbsNorthwind As DAO.Database
Dim rstEmployees As DAO.Recordset
On Error GoTo ErrorHandler
Set dbsNorthwind = CurrentDB
Set rstEmployees = dbsNorthwind.OpenRecordset("Employees")
' The index name for Employee ID.
rstEmployees.Index = "PrimaryKey"
rstEmployees.Seek "=", lngEmpID
If rstEmployees.NoMatch Then
GetHireDate = Null
Else
GetHireDate = rstEmployees!HireDate
End If
rstEmployees.Close
dbsNorthwind.Close
Set rstEmployees = Nothing
Set dbsNorthwind = Nothing
Exit Function
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
O método Seek sempre começa pesquisando registros no início do objeto Recordset. Se você usar o método Seek com os mesmos argumentos mais de uma vez no mesmo Recordset, ele localizará o mesmo registro.
Use a propriedade NoMatch no objeto Recordset para testar se um registro que corresponde aos critérios de pesquisa foi encontrado. Se o registro que corresponde aos critérios for encontrado, a propriedade NoMatch será False; caso contrário, será True.
O exemplo de código a seguir mostra como você pode criar uma função que usa o método Seek para localizar um registro usando um índice de campo múltiplo.
Function GetFirstPrice(lngOrderID As Long, lngProductID As Long) As Variant
Dim dbsNorthwind As DAO.Database
Dim rstOrderDetail As DAO.Recordset
On Error GoTo ErrorHandler
Set dbsNorthwind = CurrentDb
Set rstOrderDetail = dbsNorthwind.OpenRecordset("Order Details")
rstOrderDetail.Index = "PrimaryKey"
rstOrderDetail.Seek "=", lngOrderID, lngProductID
If rstOrderDetail.NoMatch Then
GetFirstPrice = Null
Else
GetFirstPrice = rstOrderDetail!UnitPrice
End If
rstOrderDetail.Close
dbsNorthwind.Close
Set rstOrderDetail = Nothing
Set dbsNorthwind = Nothing
Exit Function
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
Neste exemplo, chave primária da tabela consiste em dois campos: OrderID e ProductID. Ao chamar a função GetFirstPrice usando uma combinação (existente) válida dos valores de campo OrderID e ProductID, a função retorna o preço unitário do registro encontrado. Se não for possível encontrar a combinação desejada de valores de campo na tabela, a função retorna o valor Null.
Se o índice atual for um índice de campos múltiplos, os valores da chave à direita podem ser omitidos e são tratados como valores Null. Ou seja, você pode deixar de fora qualquer número de valores de chave do final de um método Seek do argumento key, mas não do início ou do meio. No entanto, se você não especificar todos os valores no índice, poderá usar apenas a cadeia de comparação ">" ou "<" com o método Seek .
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.
Comentários
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Enviar e exibir comentários de