[Lazarus-es] Como posicionar un dataset en el primer registro

Rafael Bidegain r.bidegain en gmail.com
Mie Abr 19 04:33:43 CEST 2017


Me llamó la atención lo que afirma Jesús en el primer párrafo y decidí
hacer unas pruebas.

sigo abajo

El día 18 de abril de 2017, 18:57, Jesus R. via Lazarus-es
<lazarus-es en lists.lazarus-ide.org> escribió:
> Efectivamente, no siempre cuando el BOF=true significa que estas posicionado
> en el primer registro, pero esto solo es cierto cuando el dataset esta
> vacio. En todos los otros casos si BOF=true, entonces también estas
> posicionado en el primer registro. Igualmente, si EOF=true significa o que
> estas posicionado en el último registro o el dataset esta vacio. De esto se
> puede concluir que is BOF=true y EOF=true entonces el dataset esta vacio.
> Pero esto es mejor comprobarlo con dataset.IsEmpty.

hay un caso en donde esto no es cierto.
cree un archivo dbf y agregué un registro

puse dos botones con este código

procedure TForm1.Button1Click(Sender: TObject);
begin
  dbf1.First;
  if dbf1.BOF then
     showmessage('begin of file');
  if dbf1.EOF then
     showmessage('end of file');

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  dbf1.last;
  if dbf1.BOF then
     showmessage('begin of file');
  if dbf1.EOF then
     showmessage('end of file');

end;


button1 muestra unicamente "begin of file"
button 2 muestra unicamente "end of file"


Según mi prueba lo que hace que:
 BOF sea true es la llamada a first()
 EOF sea true es la llamada a last()

saludos
-- 
Rafael Bidegain

Ya que los cuerdos no hablan, hablará el loco.
(The Fool, Padraic Pearse)

# yo quiero educación libre. ¡YA!


Más información sobre la lista de distribución Lazarus-es