Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-06-2004
rjsitruiz rjsitruiz is offline
Miembro
 
Registrado: may 2004
Posts: 42
Poder: 0
rjsitruiz Va por buen camino
Buscar y Reemplazar en un ADOTable

Hola

Alguien tiene implementado ya... algun procedimiento... de buscar y reemplazar en parecido al de Access ??

Empezé a hacerlo con el Locate.. pero me esta costando mas trabajo de lo que yo pensaba

Saludos
Responder Con Cita
  #2  
Antiguo 01-06-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Hola,

con un procedimiento es un poco complicado (o poco elengante en mi opinión) el tema de las búsquedas incrementales. Yo lo haría con una clase. Esto sería una aproximación. Ojo que no lo he probado, osea que posiblemente habrá algunos bugs, pero creo que se capta la idea

Código Delphi [-]

interface

  TBuscador = class(TObject)
  private
    FIndiceCampo: Integer;
    FDataSet: TDataSet;
  public
    constructor Create(DS: TDataSet = nil); 
    property DataSet: TDataSet read FDataSet write FDataSet; //Sobre el que se hace la búsqueda
    function Buscar(Texto: String; BuscarBOF: Boolean = True): Boolean;
  end;

implementation

//Como el valor por omisión del parámetro DS es nil, puedes llamar al constructor
//sin parámetros y asignarle posteriormente el DataSet
constructor TBuscador.Create(DS: TDataSet = nil);
begin
  inherited Create;
  FDataSet:= DS;
  FIndiceCampo:= 0;
end;

//El parámetro BuscarEOF, por defecto True, busca el texto desde el inicio del
//DataSet. En caso que se especifique el valor False, buscará incrementalmente
function TBuscador.Buscar(Texto: String; BuscarBOF: Boolean = True): Boolean;
begin
  Result:= False;
  with FDataSet do
  begin
    if BuscarBOF then
    begin
      First;
      FIndiceCampo:= 0;
    end;

    while (not EOF) and (not Result) do
    begin
      while (FIndiceCampo < Fields.Count) and (not Result) do
      begin
        //Esto seria una busqueda absoluta, si quieres opciones de búsqueda
        //parcial, con opciones de mayúsculas etc te lo dejo como mejora 
        Result:= Fields[FIndiceCampo].Text = Texto;
        Inc(FIndiceCampo);
      end;
      FIndiceCampo:= 0;
      Next;
    end;
  end;
end;

Es decir, puedes realizar una búsqueda incremental sobre cualquier punto de la tabla, solo tienes que pasarle el parámetro BuscarBOF como False.

El procedimiento de reemplazar seria casi igual, también te lo dejo para tí

No sé si me he explicado bien, para cualquier duda, ya sabes. Espero que te haya servido

Un saludo!

Última edición por __marcsc fecha: 06-06-2004 a las 23:09:29.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:50:48.


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
Copyright 1996-2007 Club Delphi