Partilhar via


Detectar os limites de um Conjunto de Registros de DAO

Em um objeto Recordset , se você tentar ir além do registro inicial ou final, ocorrerá um erro em tempo de execução. Por exemplo, se você tentar usar o método MoveNext quando já estiver no último registro do Recordset, ocorrerá um erro de trappable. Por esse motivo, é útil saber os limites do objeto Recordset.

A propriedade BOF indica se a posição atual está no início do Recordset. Se BOF for True, a posição atual será anterior ao primeiro registro do Recordset. A propriedade BOF também será True se não houver registros no Recordset quando for aberto.

Da mesma forma, a propriedade EOF será True se a posição atual estiver após o último registro no Recordset ou se não houver registros.

O exemplo de código a seguir mostra como usar as propriedades BOF e EOF para detectar o início e o fim de um objeto Recordset . Este fragmento de código cria um Recordset do tipo tabela baseado na tabela Orders do banco de dados atual. Ele passa pelos registros, primeiro do início do Recordset até o final e, em seguida, do final do Recordset para o início.

Dim dbsNorthwind As DAO.Database 
Dim rstOrders As DAO.Recordset 
 
   Set dbsNorthwind = CurrentDb 
   Set rstOrders = dbsNorthwind.OpenRecordset("Orders") 
 
   ' Do until ending of file. 
   Do Until rstOrders.EOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MoveNext            ' Move to the next record. 
   Loop 
 
   rstOrders.MoveLast               ' Move to the last record. 
 
   ' Do until beginning of file. 
   Do Until rstOrders.BOF 
      ' 
      ' Manipulate the data. 
      ' 
      rstOrders.MovePrevious        ' Move to the previous record. 
   Loop 

Lembre-se de que não há nenhum registro atual imediatamente após o primeiro loop. As propriedades BOF e EOF têm as seguintes características.

  • Se o Recordset não contiver registros quando for aberto, BOF e EOF serão True.

  • Quando BOF ou EOF é True, a propriedade permanece True até você ir para um registro existente, quando o valor de BOF ou EOF se tornará False.

  • Quando BOF ou EOF é False e o único registro de um Recordset é excluído, a propriedade permanece False até você tentar ir para outro registro, quando BOF e EOF tornam-se True.

  • Quando você cria ou abre um Recordset que contém pelo menos um registro, o primeiro registro é o atual e BOF e EOF são False.

  • Se o primeiro registro for o atual quando você usar o método MovePrevious, BOF será definido como True. Se você usar MovePrevious quando BOF for True, ocorrerá um erro em tempo de execução. Quando isso acontece, BOF permanece True e não há registro atual.

  • Da mesma maneira, ir além do último registro do Recordset altera o valor da propriedade EOF para True. Se você usar o método MoveNext quando EOF for True, ocorrerá um erro em tempo de execução. Quando isso acontece, EOF permanece True e não há registro atual.

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.