Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Ir al último registro de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=3390)

fortran 04-09-2003 17:44:09

Ir al último registro de una tabla
 
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?.

Código:

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:

Código:

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:
Código:

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.


La franja horaria es GMT +2. Ahora son las 03:04:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi