PDA

Ver la Versión Completa : Ir al último registro de una tabla


fortran
04-09-2003, 17:44:09
Hola a todos:

Supongo que a mas de uno esta pregunta le parecerá de chiste, pero a mi me lleva por la calle de la amargura.

Trabajo con Paradox, D5 y WXP. Lo que quiero es ir y posicionarme directamente en el último registro de una tabla para mirar ahí una serie de índices. Para ello estoy tratando de usar el procedimiento Last.

Hago TablaVisitas.Last;

Pero cuando voy a mirar sigo estando en el primer registro de la tabla. Ya se que podría ir recorriendo uno a uno todos los registros y pararme en el último, pero todo parece indicar que estoy haciendo algo mal con el procedimiento Last. ¿Alguien me podría decir que estoy haciendo mal?.


Procedure ActualizarTablaVisitas;
var
aux : integer;
Begin

// Ir al último Lugar de la tabla
with modulodedatos do
Begin
Tablavisitas.last;
aux := tablavisitasindice_visitas.value; //para comprobar que estoy en el último
// aquí hay mas código
End;
End;


Gracias por vuestra atención.

marcoszorrilla
04-09-2003, 17:59:35
Tendría que funcionarte, por qué no pones una rejilla conectada a la tabla y un botón con ModuloDeDatos.TablaVistas.Last;

Y así ves si efectivamente vas al final y cuando ocurre el fallo que comentas, puede ocurrir que el contenido del último registro sea igual que el del primero y te esté confundiendo?

Un Saludol.

fortran
04-09-2003, 18:42:46
Bufff, ya se cual es el problema. El problema es que TablaVisitas es una tabla de detalle de otra llamada TablaClientes... y por lo visto no se mueve de los registros asociados al cliente. La verdad es que no tengo muy claro como solucionarlo... agradeceré cualquier ayuda y si se me ocurre algo lo postearé aquí.

Únicamente quiero ir al último registro para mirar el Indice_visita que tiene (un índice que quiero incrementar manualmente cada vez que hago una visita) y después hacer un append con otro registro e Indice_visita := Indice_visita + 1.


Muchas gracias

marcoszorrilla
04-09-2003, 19:17:57
Muy sencillo, desengancha temporalmente la relación maestro detalle y ya lo tienes.

Se hace guardando el valor en una variable, poniendola nul y luego recuperándola cuando sea preciso.

solución más facil utilizar un segundo Ttable sin relación maestro detalle.

Un Saludo.

fortran
05-09-2003, 09:28:46
Perdona Marcos pero no se muy bien como hacerlo:

He intentado esto pero no me lo permite:

var
aux : integer;
nueva : TTable;
Begin

// Ir al último Lugar de la tabla
with modulodedatos do
Begin
nueva.create(application);
nueva.mastersource := tablavisitas.MasterSource;
Tablavisitas.MasterSource := null;
Tablavisitas.last;
aux := tablavisitasindice_visitas.value; //para comprobar que estoy en el último
Tablavisitas.mastersource := DatasourceClientes;
End;
End;


Pero me dice que los tipos Tdatasource y variant son incompatibles al intentar hacer Tablavisitas.mastersource := null;

Gracias por tomarte la molestia de responderme.

marcoszorrilla
05-09-2003, 15:15:09
Mírate este ejemplo, es fácil de aplicar:

var
miMaster:TdataSource;
begin

miMaster:=MiTabla.MasterSource;
MiTabla.MasterSource:=nil;
....Acciones a realizar
MiTable.MasterSource:=MiMaster;

end;


Un Saludo.

fortran
05-09-2003, 16:36:02
Gracias Marcos:

Ahora está solucionado, funcionó perfectamente.