Ver Mensaje Individual
  #6  
Antiguo 28-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Reputación: 27
Caral Va por buen camino
Hola Max_E
Aqui te envio un codigo para que busques en este caso Clientes, los nombres de las tablas por supuesto son los mios, tendras que poner los tuyos para que te funcione, pero el codigo funciona perfectamente y lo puedes aplicar si le pones un poco de atencion, es realmente facil.
Código Delphi [-]
unit UFBuscaCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UDM1, DBCtrls, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls,
  Buttons;

type
  TFBuscaCliente = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    CBFiltro: TComboBox;
    DBGrid1: TDBGrid;
    ATClientes: TADOTable;
    ATClientesCodCliente: TIntegerField;
    ATClientesNombreCliente: TWideStringField;
    ATClientesDireccion1: TWideStringField;
    ATClientesDireccion2: TWideStringField;
    ATClientesPais: TWideStringField;
    ATClientesProvincia: TWideStringField;
    ATClientesCanton: TWideStringField;
    ATClientesDistrito: TWideStringField;
    ATClientesApartado: TWideStringField;
    ATClientesContacto: TWideStringField;
    ATClientesTelefono: TWideStringField;
    ATClientesExtencion: TWideStringField;
    ATClientesFax: TWideStringField;
    ATClientesEmail: TWideStringField;
    ATClientesNoEnvEmail: TBooleanField;
    ATClientesTerminos: TWideStringField;
    ATClientesVendedor: TWideStringField;
    ATClientesSuspendido: TBooleanField;
    ATClientesExcento: TBooleanField;
    ATClientesFechaIngreso: TDateTimeField;
    ATClientesLimiteCredito: TFloatField;
    ATClientesNotas: TMemoField;
    DSClientes: TDataSource;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    DBText1: TDBText;
    DBText2: TDBText;
    Label3: TLabel;
    DBText3: TDBText;
    Label4: TLabel;
    DBText4: TDBText;
    DBText5: TDBText;
    Label5: TLabel;
    Label6: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ATClientesCatPrecio: TWordField;
    DBListBox1: TDBListBox;
    procedure Edit1Change(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Cod_Cliente: string;
    Nombre_Cliente: string;
    NombreCliente: string;
  end;

var
  FBuscaCliente: TFBuscaCliente;

implementation

{$R *.dfm}

procedure TFBuscaCliente.Edit1Change(Sender: TObject);
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      ATClientes.Filtered := False;
      If CBFiltro.Text = 'Código' then Filtro := 'CodCliente Like '+Edit1.Text
         else If CBFiltro.Text = 'Nombre' then Filtro := 'NombreCliente Like '''+ Edit1.Text + '*'''
            else If CBFiltro.Text = 'Teléfono' then Filtro := 'Telefono Like '''+ Edit1.Text + '*''';
      ATClientes.Filter := Filtro;
      ATClientes.Filtered := True
   end
   else ATClientes.Filtered := False;
end;

procedure TFBuscaCliente.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   IF Key = VK_DOWN then
   DbGrid1.SetFocus;
end;

procedure TFBuscaCliente.BitBtn1Click(Sender: TObject);
begin
   CodCliente := ATClientesCodCliente.AsString;
   Cod_Cliente := ATClientesCodCliente.AsString;
   NombreCliente := ATClientesNombreCliente.AsString;
   Nombre_Cliente := ATClientesNombreCliente.AsString;
   Close;
end;

procedure TFBuscaCliente.DBGrid1DblClick(Sender: TObject);
begin
   BitBtn1Click(DBGrid1);
end;

procedure TFBuscaCliente.BitBtn2Click(Sender: TObject);
begin
   CodCliente := '';
   Cod_Cliente := '';
   NombreCliente := '';
   Nombre_Cliente := '';
   Close;
end;

procedure TFBuscaCliente.FormCreate(Sender: TObject);
begin
   ATClientes.Open;
end;

procedure TFBuscaCliente.FormDestroy(Sender: TObject);
begin
   ATClientes.Close;
end;

end.
Como veras aqui se aplican varias cosas en el filtro, codigo, nombre, telefono.
Yo no uso un listbox para esto, uso un dbgrid, ya que me da la informacion completa del cliente en este caso, no creo que tengas mas problemas de todos modos si necesitas algo me dices.
Saludos
Responder Con Cita