Limites de um conjunto de registros

Recordset dá suporte às propriedades BOF e EOF para delinear o início e o fim, respectivamente, do conjunto de dados. Você pode pensar no BOF e no EOF como registros "fantasmas" posicionados no início e no final do Recordset. Contando com BOF e EOF, nosso Recordset de exemplo agora teria esta aparência:

ProductID ProductName UnitPrice
BOF
7 Uncle Bob's Organic Dried Pears 30,0000
14 Tofu 23,2500
28 Rssle Sauerkraut 45,6000
51 Manjimup Dried Apples 53,0000
74 Longlife Tofu 10,0000
EOF

Quando um cursor passa do último registro, EOF é definido como True; caso contrário, seu valor é False. Da mesma forma, quando o cursor se move antes do primeiro registro, BOF é definido como True; caso contrário, seu valor é False. Essas propriedades são comumente usadas para enumerar registros no conjunto de dados, conforme ilustrado no fragmento de código JScript a seguir.

while (objRecordset.EOF != true)   
{  
   // Work on the current record.  
   ...  
   // Advance the cursor forward to the next record.  
   objRecordset.MoveNext();  
}  
or  
while (objRecordset.BOF != true)   
{  
   // Work on the current record.  
   ...  
   // Move the cursor to the previous record.  
   objRecordset.MovePrevious();  
}  

Se tanto BOF quanto EOF forem True, o objeto Recordset estará vazio. Ambas as propriedades serão False para um objeto Recordset recém-aberto e não vazio. Você pode usar as propriedades BOF e EOF juntas para determinar se um objeto Recordset está vazio ou não, conforme mostrado no fragmento de código JScript a seguir.

if (objRecordset.EOF == true && objRecordset.BOF == true)  
{  
   WScript.Echo("we got an empty dataset.");  
}  
else  
{  
   WScript.Echo("we got a full dataset.");  
}  

Esse esquema funciona para todos os tipos de cursor e independe dos provedores subjacentes. Se você tentar determinar o vazio de um objeto Recordset verificando se o valor da propriedade RecordCount é zero (0) ou não, precisará tomar precauções para usar um cursor e um provedor apropriados que deem suporte ao retorno do número de registros no resultado.

Se você excluir o último registro restante no objeto Recordset, o cursor será deixado em um estado indeterminado. As propriedades BOF e EOF podem permanecer False até que você tente reposicionar o registro atual, dependendo do provedor. Para saber mais, confira Excluir registros usando o método Delete.