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
Parabéns pela vídeo aula “Formulário De Pesquisa Padrão Com Parâmetros Delphi”
Primeiro vídeo seu que assisti, e achei de longe –> “Altíssimo nível”
Impressionante seu nível de conhecimento e didática.
Nesse exemplo seria interessante colocar um campo: “Automático” caso não queira informar código, nome, ou qualquer outro campo, nesse caso a opção “Automático” iria pesquisar em vários campos ao mesmo tempo, sem a necessidade do usuário escolher o campo a ser pesquisado.