La Web del Programador: Comunidad de Programadores
 
    Pregunta:  9949 - BOTONES DE NAVEGACION EN CLIENTE/SERVIDOR
Autor:  Adolfo Mario Escobar Tomases
Me encuentro desarrollando una aplicacion cliente/servidor y mi pregunta consiste es en como desplazarme al final o al inicio de alguna tabla contenida en la base de datos. Esta aplicacion la estamos trabajando con instrucciones SQLEXEC( )UTILIZANDO el ODBC DEL SISTEMA..

Agradeciendo de antemano la atención prestada

  Respuesta:  Eloy Santillan
Es simple solo tienes que hacer consultas parecidas a ....\

Avansar 1...

Select TOP 1 * Fom xxxxx where compo > act_campo order by campo

atraz 1...

Select TOP 1 * Fom xxxxx where compo < act_campo order by campo

inicio ..

Select TOP 1 * Fom xxxxx order by campo

Final ...

Select TOP 1 * Fom xxxxx order by campo desc

Eso es todo te recomiendo que hagas una buena programacion de un grupo de botones y crees una clase ... es la forma que yo lo manejo y esta clase la tengo en mas de 4 sistemas corporativos y funciona bien...

De preferencia use id como el campo de order y seleccion...

  Respuesta:  mago
Estimado amigo:
Veo que no entiendes mucho del tema Cliente/Servidor. Al incluir esta arquitectura en tus programas tenes que cambiar la forma de pensar en programar. Si usas una conexion C/S no hay forma de "navegar" en la tabla como si fuera el motor de VFP comun.
Solución: Descargar la tabla (entera o solo los datos que necesitas) desde el servidor como un cursor (SQLEXEC o Vistas remotas) y luego aplicar los GO TOP, GO BOTTOM , GO TO nRec, etc.
Si necesitas ayuda sobre esto estoy a tu dispocision.

  Respuesta:  juan pablo medina peña
buenas solo debes de llevar el RecordSet que se ha generado hasta el final de la tabla

esta es la programacion para el boton siguiente y todo se utilza como si estubieras programando en VB
WITH this
IF .RecordSet.lUsarKeys
*-- Mover la clave, y reconsultar...
.RecordSet.Keys.MoveNext()
.RecordSet.Requery()
.Estado=0
ELSE
IF .RecordSet.MoveNext()
.Estado=0
ENDIF
ENDIF
*---anterior
WITH this
IF .RecordSet.lUsarKeys
*-- Mover la clave, y reconsultar...
.RecordSet.Keys.MovePrevious()
.RecordSet.Requery()
.Estado=0
ELSE
IF .RecordSet.MovePrevious()
.Estado=0
ENDIF
ENDIF
.RefrescarBotones()
ENDWITH

*--ultimo
WITH this
IF .RecordSet.lUsarKeys
*-- Mover la clave, y reconsultar...
.RecordSet.Keys.MoveLast()
.RecordSet.Requery()
.Estado=0
ELSE
IF .RecordSet.MoveLast()
.Estado=0
ENDIF
ENDIF
.RefrescarBotones()
ENDWITH
*---primero

WITH this
IF .RecordSet.lUsarKeys
*-- Mover la clave, y reconsultar...
.RecordSet.Keys.MoveFirst()
.RecordSet.Requery()
.Estado=0
ELSE
IF .RecordSet.MoveFirst()
.Estado=0
ENDIF
ENDIF
.RefrescarBotones()
ENDWITH

PD pero si este recorsed lo llevas a xml puede que no tengas que realizar un llamado la db. cargarlos una vez y solo moverte en esed xml ..
HASTA PRONTO