Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Ubicar el siguiente registro de un LOCATE ?? (https://www.clubdelphi.com/foros/showthread.php?t=49124)

amadis 13-10-2007 13:36:14

Ubicar el siguiente registro de un LOCATE ??
 
Que tal Gente.

¿Existe una forma de ubicar el registro siguiente al encontrado por el método LOCATE?.

Locate se posiciona en el primero de los que cumplan con la condición, ¿no existe un locatenext?. Se puede hacer algo para colocar en otro botón que diga siguiente y que avance un registro mientras siga cumpliendo la condición del locate.

Esto es sobre tabla paradox por BDE que tienen aplicado un filtro bastante complejo. Por eso busco una forma de hacer un locate que me permita buscar el siguiente.

Gracias

enecumene 13-10-2007 15:14:55

Hola Amadis, puedes utiliza este ejemplo que se encuentra en el libro La Cara Oculta de Delphi 4 de Ian Marteens:

Creamos una funcion:

Código Delphi [-]
//Buscar, para establecer el filtro y buscar el primer registro:
function TDlgBusqueda.Buscar(ATable: TTable): Boolean;
var
NumCampo: Integer;
begin
AsignarTabla(ATable);
if ShowModal = mrOk then
begin
NumCampo := Integer(cbColumnas.Items.Objects[
cbColumnas.ItemIndex]);
FTabla.Filter := Format('[%s] = %s',
[FTabla.Fields[NumCampo].FieldName,
QuotedStr(edValor.Text]);
Result := FTabla.FindFirst;
if not Result then
Application.MessageBox('Valor no encontrado', 'Error',
MB_ICONERROR + MB_OK);
end
else
Result := False;
end;

La implementación del comando Buscar siguiente
sería algo así:

Código Delphi [-]
function TDlgBusqueda.BuscarSiguiente: Boolean;
begin
Result := FTabla.FindNext;
if not Result then
Application.MessageBox('Valor no encontrado', 'Error',
MB_ICONERROR + MB_OK);
end;

espero que te ayude.

Saludos.

amadis 13-10-2007 15:58:48

Parece interesante la función!

Aún no la he probado porque tengo otros filtros aplicados que no quiero descartar.

Por eso intentaba con Locate.

Me parece que te falta poner la implementacion de la función AsignarTabla()


La franja horaria es GMT +2. Ahora son las 01:57:30.

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