Consulta usando Edit e um DBGrid que serve para varias tabelas

Delphi

24/08/2013

Senhores, estou com um pequeno problema em levar informções para um form de pesquisa, funciona assim (na teoria) um form, tem apenas um edit e um dbgrid e um data source, assim que acesso um form onde de cadastro de caixa tenho que realizar pesquisa em diferentes tabela más independentimente, Exemplo..ORIGEM, CENTRO DE CUSTO, FUNCIONARIO etc. achei que seria coviniente apenas um from de pesquisa para elas e apenas delegar valores para o datasource e o filtros..

tentei assim..

No edit tem a pesquisa..este sria o codigo

   if Edit1.Text <> '' then
   begin
   TipoPesc := Campo + ' Like' + Quotedstr(Edit1.Text + '%');
   PescSQL('Select * from '+Tabela+' where ');
   end;


O campo e a Tabela são duas váriáveis do tipo string para que eu possa passar os valores externamente;.

O codigo para receber os parametros é este.

   Cursor:=crSQLWait;
   FPesquisacGlobal := TFPesquisacGlobal.Create(Self);
     try
        FPesquisacGlobal.ShowModal;
        Cursor := crDefault;
        Campo := 'DESCRICAO';
        Tabela := 'CONTA_MOVIMENTO';
        FPesquisacGlobal.Dts_PescGlobal.DataSet := Dts_PescContaMovimento.DataSet;
     finally
        FreeAndNil(FPesquisacGlobal);
     end;


no caso o campo que é a varialvel global que foi declarada é reponsável pelo qual parte da tabea será feita a busca
no caso do Tabela..recebe o nome da tabela.

    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
  public
      procedure PescSQL(txt: string);
    { Public declarations }
  end;

var
  FPesquisacGlobal: TFPesquisacGlobal;
  TipoPesc, Campo, Tabela: string;


implementation

uses
  DBClient, FCadCx;

{$R *.dfm}

procedure TFPesquisacGlobal.Edit1Change(Sender: TObject);
begin
   if Edit1.Text <> '' then
   begin
   TipoPesc := Campo + ' Like' + Quotedstr(Edit1.Text + '%');
   PescSQL('Select * from '+Tabela+' where ');
   end;
end;

procedure TFPesquisacGlobal.Edit1Enter(Sender: TObject);
begin

end;

procedure TFPesquisacGlobal.PescSQL(txt: string);
begin
  with TClientDataSet(Dts_PescGlobal.DataSet) do
  begin
    Close;
    CommandText:=txt+TipoPesc;
    Open;
  end;
end;

end.


e este é o codigo completo do sistema de busca..não dá erro más não funciona..vlw
Gilmar Moraes

Gilmar Moraes

Curtidas 0

Respostas

Gilmar Moraes

Gilmar Moraes

24/08/2013

Descobri que as variaveis que coloquei depois da criaçõ do form não estão recebendo os valoes de definí..alguém saberia porque ?
GOSTEI 0
Gilmar Moraes

Gilmar Moraes

24/08/2013

Descobri que as variaveis que coloquei depois da criaçõ do form não estão recebendo os valoes de definí..alguém saberia porque ?


Pura desatenção minha..coisa boba mesmo a ordem estava errado..agora ficou assim.

   Cursor:=crSQLWait;
   FPesquisacGlobal := TFPesquisacGlobal.Create(Self);
     try
        Campo := 'DESCRICAO';
        Tabela := 'CONTA_MOVIMENTO';
        FPesquisacGlobal.Dts_PescGlobal.DataSet := Dts_PescContaMovimento.DataSet;
        FPesquisacGlobal.ShowModal;
        Cursor := crDefault;
     finally
        FreeAndNil(FPesquisacGlobal);
     end;
end;


agora é só questão de estética..teria uma forma de o grid mostar apenas um determinado campo ? tipo o Campo DESCRIÇÂO.
GOSTEI 0
Gilmar Moraes

Gilmar Moraes

24/08/2013

Resolvido tambem. foi só estudar um pouco o componente..vlw podem fechar o topico

   Cursor:=crSQLWait;
   FPesquisacGlobal := TFPesquisacGlobal.Create(Self);
     try
        Campo := 'DESCRICAO';
        Tabela := 'CONTA_MOVIMENTO';
        FPesquisacGlobal.Dts_PescGlobal.DataSet := Dts_PescContaMovimento.DataSet;
        FPesquisacGlobal.DBGrid4.Columns[0].FieldName := 'DESCRICAO';
        FPesquisacGlobal.DBGrid4.Columns[0].Width := 500;
        FPesquisacGlobal.ShowModal;
        Cursor := crDefault;
     finally
        FreeAndNil(FPesquisacGlobal);
     end;

GOSTEI 0
POSTAR