Formulário de pesquisa padrão com parâmetros Delphi

Hoje vou mostrar como criar um formulário de pesquisa padrão.

Passar parâmetros entre um formulário e outro como campos que desejo listar na pesquisa, tabela e qual campo quero capturar no resultado da consulta.

Delphi e Firedac.

Declarações(frmPesquisa):

  private
    { Private declarations }
    cCampos, cCampoRetorno, cTabela : string;
  public
    { Public declarations }
    constructor Create(AOwner : TComponent; par_lstCampos : Array of string;par_cTabela, par_cCampoResult :string);

Creator (frmPesquisa)

constructor TfrmPesquisa.Create(AOwner: TComponent;
  par_lstCampos: array of string; par_cTabela, par_cCampoResult: string);
var
 n : Integer;
begin
  inherited Create(AOwner);
  Conexao.Open;
  cCampoRetorno := par_cCampoResult;
  cCampos:='';
  cbCAMPOS.Clear;
  cTabela := par_cTabela;
  for n := 0 to Length(par_lstCampos) -1 do
     begin
       cbCAMPOS.Items.Add(par_lstCampos[n]) ;
       if n = 0 then
         cCampos := par_lstCampos[n]
       else
         cCampos := cCampos +','+ par_lstCampos[n]  ;
     end;
     cbCAMPOS.ItemIndex := 1;
  if qrSQL.Active then
     qrSQL.Close;
  with qrSQL.SQL do
      begin
        Clear;
        add('Select '+cCampos);
        add('from '+cTabela)
      end;
  qrSQL.Open;

end;

Botão de Pesquisa

procedure TfrmPesquisa.btnPesquisaClick(Sender: TObject);
begin
  if qrSQL.Active then
     qrSQL.Close;
  with qrSQL.SQL do
      begin
        Clear;
        add('Select '+cCampos);
        add('from '+cTabela);
        add('where '+trim(cbCAMPOS.Text)+' like :cParametro');
      end;
  if cbFiltro.Text = 'parte' then
     qrSQL.ParamByName('cParametro').AsString := '%'+trim(edtBusca.Text)+'%'
  else if cbFiltro.Text = 'inicio' then
     qrSQL.ParamByName('cParametro').AsString := trim(edtBusca.Text)+'%'
  else if cbFiltro.Text = 'igual' then
     qrSQL.ParamByName('cParametro').AsString := trim(edtBusca.Text) ;
  qrSQL.Open;

end;

DBgrid double click

procedure TfrmPesquisa.DBGrid1DblClick(Sender: TObject);
begin
  edtRetorno.Clear;
  edtRetorno.Text := qrSQL.FieldByName(cCampoRetorno).AsVariant;
  qrSQL.Close;
  Conexao.Close;
  frmPesquisa.ModalResult := mrYes;
end;

Botão Cliente do FrmPrincipal

procedure TfrmPrincipal.btnClienteClick(Sender: TObject);
begin
   frmPesquisa := tfrmPesquisa.Create(self,['codigo','nome','telefone'],'cliente','nome');
   try
     if frmPesquisa.ShowModal = mrYes then
        edtRetornoPesquisa.Text := frmPesquisa.edtRetorno.Text
     else
        edtRetornoPesquisa.Clear;
   finally
     FreeAndNil(frmPesquisa);
   end;
end;

delphi #lazarus #formulário delphi #formulário de pesquisa #pesquisa padrão #passar parâmetros no formularo #formulário com parametros #parametros array #parametros vetor #array #vetor #firedac #banco de dados #mysql #sql #postgre #daniel de morais #infocotidiano

Publicado por

Daniel Morais

Comecei na área de TI há um bom tempo (1991) com aqueles cursos de MS-DOS 6.22, WordStar, Lotus123, Dbase III Plus, etc. Adorei programar em Dbase III Plus utilizando Dbf; achei fantástico quando aprendi a programar em Clipper Summer 87 e posteriormente Clipper 5.x, que era muito estável em rede utilizando Novell NetWare. Desde então sou um fanático por TI. Hoje desenvolvo aplicações para Windows, Android, OS X e Linux utilizando Lazarus (free Pascal) . Blogueiro (www.infocotidiano.com.br, www.aprendalazarus.com.br, www.startdb.info). Além dos meus Blogs tenho um canal no YouTube o www.youtube.com.br/infocotidiano onde tenho mais de 1 Milhão de visualizações com vídeos de dicas diversificadas que vão desde solucionar um erro de impressão, curso sobre banco de dados, até criar software multi-plataforma utilizando o Lazarus.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *