Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   como usar un componente Data-Aware para buscar registros (https://www.clubdelphi.com/foros/showthread.php?t=74266)

_CALI 08-06-2011 20:26:43

como usar un componente Data-Aware para buscar registros
 
Hola amigos un gusto como siempre, pues ahora me da otra inquietud con respecto a lo siguiente:


en un formulario tengo varios componentes que estan enlazados a un una tabla de clientes, mi tabla consta de 3 campos (codigo, nombre,direccion)

DBEdit1 para el campo código,
DBEdit2 para el campo nombre,
DBEdit3 para el campo direccion

mi pregunta es la siguiente: Se puede utilizar al componente asociado al campo codigo: DBEdit1,
para poder ingresar un codigo para buscar a los clientes, es decir utilizar al DBEdit1 tanto para enlazar, visualizar y editar el campo, como tambien para introducir texto para q este se use para hacer la busqueda requerida???



optaba por usar un TEdit normal, porque el DBEdit no me permite ingresar texto. Alguna idea o sugerencia gracias de antemano!!!:)

ecfisa 08-06-2011 21:27:56

Hola _CALI.

Cita:

Se puede utilizar al componente asociado al campo codigo: DBEdit1, para poder ingresar un codigo para buscar a los clientes,
Si se puede, indicándole ántes que acción queremos hacer. Esta es una forma:
Código Delphi [-]
type
  TForm1 = class(TForm)
  ...
  private
     procedure CodigoSetSetText(Sender: TField; const Text: string);       
  public
  end;
...
implementation

procedure TForm1.CodigoSetSetText(Sender: TField; const Text: String);
begin
  if not DataSet.Locate('NAME',Text,[]) then
    ShowMessage('No encontrado');
end;

procedure TForm1.btnBuscarClick(Sender: TObject);
begin
 DataSet.FieldByName('NAME').OnSetText:= DataSetSetText;
end;

procedure TForm1.btnEditarClick(Sender: TObject);
begin
  DataSet.FieldByName('NAME').OnSetText:= nil;
  DataSet.Edit;
end;

procedure TForm1.btNuevoClick(Sender: TObject);
begin
  DataSet.FieldByName('NAME').OnSetText:= nil;
  DataSet.Append;
end;


...
En este ejemplo el TButton btnBuscar se vale del evento OnSetText del campo. Que ocurre cuando el texto recibe un nuevo valor (pero antes de ser almacenado), para realizar una busqueda, posicionándose en el registro o informando si no se encontró.
Los TButton btnEditar y btnNuevo ponen el DataSet en modo Edit e Insert respectivamente desvinculando el método CodigoSetSetText del evento OnSetText.

Ahora una cosa es que se pueda y otra si es recomendable.
Particularmente creo que es un modo rebuscado y se presta para confundir al usuario además de complicar el código.

Saludos.

Casimiro Noteví 08-06-2011 21:33:03

Si no he entendido mal:

Puedes controlar al salir del edit que está enlazado con el código para hacer una búsqueda, si existe se presentan los datos. Si no existe se dan de alta.


La franja horaria es GMT +2. Ahora son las 17:21:24.

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