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.