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.
Segue parte do código form pesquisa e o vídeo logo abaixo:
private
cCampos, cCampoRetorno, cTabela : string;
public
constructor Create(AOwner : TComponent; par_lstCampos : Array of string;par_cTabela, par_cCampoResult :string);
Constructor
constructor TfrmPesquisa.Create(AOwner: TComponent;
par_lstCampos: array of string; par_cTabela, par_cCampoResult: string);
var
n : Integer;
begin
inherited Create(AOwner);
ZConnection1.Connect;
cCampoRetorno:=par_cCampoResult;
cCampos:='';
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 ZQuery1.Active then
ZQuery1.Close;
with ZQuery1.sql do
begin
Clear;
add('select '+cCampos);
add('from '+cTabela);
end;
ZQuery1.Open;
end;
Botão de Pesquisa
procedure TfrmPesquisa.btnPesquisaClick(Sender: TObject);
begin
if ZQuery1.Active then
ZQuery1.Close;
with ZQuery1.sql do
begin
Clear;
add('select '+cCampos);
add('from '+cTabela);
add('where '+trim(cbCampos.Text)+' like :cParametro');
end;
if trim(cbFiltro.Text) = 'parte' then
ZQuery1.ParamByName('cParametro').AsString:='%'+trim(edtBusca.text)+'%'
else if trim(cbFiltro.Text) = 'igual' then
ZQuery1.ParamByName('cParametro').AsString:=trim(edtBusca.text)
else if trim(cbFiltro.Text) = 'inicio' then
ZQuery1.ParamByName('cParametro').AsString:=trim(edtBusca.text)+'%' ;
ZQuery1.Open;
edtResultado.Text:='';
end;
Clique duplo dbgrid
procedure TfrmPesquisa.DBGrid1DblClick(Sender: TObject);
begin
edtResultado.Text:=ZQuery1.FieldByName(cCampoRetorno).AsVariant;
ZQuery1.Close;
ZConnection1.Disconnect;
frmPesquisa.ModalResult:=mrYes;
end;
No form principal, codigo p chamar a pesquisa
frmPesquisa := TfrmPesquisa.Create(self,['codigo','nome','telefone'],'cliente','nome');
try
frmPesquisa.ShowModal;
edtResultado.Text:= frmPesquisa.edtResultado.Text;
finally
FreeAndNil(frmPesquisa);
end;
Veja o vídeo:
lazarus #delphi #pascal #banco de dados #database #pesquisa #parametro entre formularios #formulario #parametros #formulario de pesquisa
Obrigado por partilhar os seus conhecimentos, eu recebo um erro ao compilar.
ubusqueda.pas(72,7) Error: Identifier not found “clear”
Pesquisei na web tentando encontrar outra pessoa com o mesmo erro, mas não encontrei nada, então estou preso, então não tenho escolha a não ser perguntar.
Bom dia !
segue anexo o link para o codigo fonte, so baixar e complilar !