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

Deixe uma resposta

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