Percorrer um Conjunto de Registros de DAO
Um objeto conjunto de registros geralmente não tem uma posição atual, geralmente em um registro. Quando você se referir aos campos em um conjunto de registros, você obtém valores de registro na posição atual, conhecida como registro atual. No entanto, a posição atual também pode ser imediatamente antes do primeiro registro em um conjunto de registros ou imediatamente após o último registro. Em determinadas circunstâncias é indefinida a posição atual.
Use os seguintes métodos Mover para fazer loop através dos registros em um conjunto de registros:
O método MoveFirst move para o primeiro registro.
O método MoveLast move para o último registro.
O método MoveNext move para o próximo registro.
O método MovePrevious move para o registro anterior.
O método mover move avançar ou retroceder o número de registros que você especificar sua sintaxe.
Use cada um desses métodos em objetos Recordset de tipo de tabela, tipo dynaset e tipo de instantâneo. Em um apenas um tipo de encaminhamento, o objeto conjunto de registros, você pode usar apenas os métodos MoveNext e mover. Se você usar o método mover um encaminhamento apenas um tipo de forma conjunto de registros, o argumento que especifica o número de linhas para mover-se deve ser um positivo inteiro.
O seguinte código de exemplo será aberto um objeto conjunto de registros na tabela de funcionários que contém todos os registros com um valor nulo no campo Supervisor. A função, em seguida, atualiza os registros para indicar que esses funcionários são temporários. Para cada registro no conjunto de registros, o exemplo altera os campos título e anotações e salva as alterações com o método atualização. O método MoveNext move para o próximo registro.
Sub UpdateEmployees()
Dim dbsNorthwind As DAO.Database
Dim rstEmployees As DAO.Recordset
Dim strSQL As String
Dim intI As Integer
On Error GoTo ErrorHandler
Set dbsNorthwind = CurrentDb
' Open a recordset on all records from the Employees table that have
' a Null value in the ReportsTo field.
strSQL = "SELECT * FROM Employees WHERE ReportsTo IS NULL"
Set rstEmployees = dbsNorthwind.OpenRecordset(strSQL, dbOpenDynaset)
' If the recordset is empty, exit.
If rstEmployees.EOF Then Exit Sub
intI = 1
With rstEmployees
Do Until .EOF
.Edit
![ReportsTo] = 5
![Title] = "Temporary"
![Notes] = rstEmployees![Notes] & "Temp #" & intI
.Update
.MoveNext
intI = intI + 1
Loop
End With
RstEmployees.Close
dbsNorthwind.Close
Set rstEmployees = Nothing
Set dbsNorthwind = Nothing
Exit Sub
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub
Observação
O exemplo anterior é fornecido apenas para fins de ilustrar os métodos atualização e MoveNext. Para obter um desempenho ideal, é recomendável realizar essa operação em massa com uma consulta atualização SQL.
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.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de