PDA

Ver la Versión Completa : Ubicar el siguiente registro de un LOCATE ??


amadis
13-10-2007, 13:36:14
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:


//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í:

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()