Navegación en registros

Pues nuevamente acudo a ti para ver si me puedes ayudar con un problema que no me deja avanzar...
Tengo una pantalla principal en la que muestro en un grid unos registros (a los que llamo paquetes), y el botón VER, que al presionarlo abre la pantalla "Ver Paquetes" y muestra los datos completos del paquete que fue seleccionado. En la pantalla "Ver Paquetes" tengo 4 botones: inicio, atrás, siguiente, ultimo; de manera que me pueda desplazar por los registros según se requiera.
El problema está en que cuando termina de recorrer los registros no valida si llega al final o al inicio de los registros, pero foxpro si me manda el mensaje: "El registro está fuera del intervalo".
Este código tengo en el botón "siguiente":
varvali=thisform.lblPosi.caption
nvavar=(VAL(varvali)+ 1)
GOTO nvavar in paquetes
IF NOT EOF() 
  thisform.lbltxtVEstatusActual.caption=paquetes.estatus
  thisform.txtVAlmacenOrigen.value=paquetes.almacenorigen
  thisform.lblPosi.caption=STR(nvavar)
ELSE
  MessageBox("Terminaron los registros.")
  thisform.btnVSiguiente.enabled=.f.
ENDIF
Este código tengo en el botón "atras":
varvali=thisform.lblPosi.caption
nvavar=(VAL(varvali)- 1)
GOTO nvavar in paquetes
IF NOT BOF() 
  thisform.lbltxtVEstatusActual.caption=paquetes.estatus
  thisform.txtVAlmacenOrigen.value=paquetes.almacenorigen
  thisform.lblPosi.caption=STR(nvavar)
 ELSE
  MessageBox("Inicio de registros.")
  thisform.btnVAnterior.enabled=.f.
Endif
Te comento que uso GOTO porque cuando usaba SKIP no funcionaba como yo quería. Me podrás orientar en como validar para que GOTO no siga buscando el registro siguiente cuando ya legó al inicio o al final
Respuesta
1
Como crear PAQUETES, ¿o esa es la base de datos? ¿O es un alias?, ¿Cuántos registros muestras por ves?, etc, respóndeme para poderte colaborar
PAQUETES es la tabla donde almaceno los registros. La pantalla "Ver Paquetes" me muestra un paquete a la vez, es decir un registro a la vez con sus respectivos campos, mismos que muestro en diferentes textbox deshabilitados.
Si la estas recorriendo con botones, siguitene anterior inicio final debes tener en cuenta el inicio BOF() y el fin eof() de Archivo.
Botón inicio()
select paquetes
Go top
Botón Fin()
select paquetes
Go bottom
Botón siguiente()
if !eof()
select paquetes
  skip
  if eof()
     go bottom
endif
endif
boton anterior()
select paquetes
if !bof()
  skip -1
  if bof()
     Go top
Endif
Endif
Pruébalo has los ajustes correspondientes y me dices.

Añade tu respuesta

Haz clic para o