Utilizando o like

Delphi

21/12/2010

Boa noite; Estou tentando utilizar o operador like com parametro e não estou conseguindo, vou descrever o que desejo fazer. Tenho um formulario que de pesquisa, neste formulario apartir de um Tedit quero passar o parametro para a pesquisa. o codigo é o seguinte; Um detalhe através de um Tcombox escolho o tipo de pesquisa: Fornecedor ou Despesa. através do Tedit, passo o parametro. procedure Tfrm_PesqGeral.btn_PesqGeralClick(Sender: TObject); var a:String; begin if edcb_PesqGeral.ItemIndex =0 then begin a:= 'select * from V_LANCAMENTO where fornecedor like ''%'' + edt_pesqgeral.Text + ''%'' and DATAEMPENHO between :data1 and :data2'; end else a:= 'select * from V_LANCAMENTO where id_grupo =:Despesa and DATAEMPENHO between :data1 and :data2'; with dmPesq.cds_PesqGeralLanc do begin CommandText:= a; close; Params[0].AsString:=edt_pesqgeral.Text; Params[1].AsDate:=dt_Dataini.Date; Params[2].AsDate:=dt_Datafin.date; open; end; end; Quando execulto o programa apresenta este erro: project scfp.exe raised exception class elisterror with message 'List index out of bounds (2)'. process stopped. use step or run to continue. Gostaria de ajuda para solucionar este problema. Obrigado a todos.
Joaci Queiroz

Joaci Queiroz

Curtidas 0

Respostas

Junior Miranda

Junior Miranda

21/12/2010

Blza?

Disponibiliza o código entre as tags. 


[]'s
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

21/12/2010

procedure Tfrm_PesqGeral.btn_PesqGeralClick(Sender: TObject);
var a:String;
begin
  if edcb_PesqGeral.ItemIndex = 0 then
    a:= 'select * from V_LANCAMENTO where fornecedor like :Pesquisa and DATAEMPENHO between :data1 and :data2'
  else
    a:= 'select * from V_LANCAMENTO where id_grupo = :Pesquisa and DATAEMPENHO between :data1 and :data2';

  with dmPesq.cds_PesqGeralLanc do
  begin
    close;
    CommandText:= a;

    if edcb_PesqGeral.ItemIndex = 0 then
      Params[0].AsString := '%'+edt_pesqgeral.Text+'%'
    else
      Params[0].AsString := edt_pesqgeral.Text;

    Params[1].AsDate := dt_Dataini.Date;
    Params[2].AsDate := dt_Datafin.date;
    open;
  end;
end;
GOSTEI 0
Joaci Queiroz

Joaci Queiroz

21/12/2010

EMERSON,

Muito obrigado com as alterações que você fez funcionou perfeito. Obrigado.
GOSTEI 0
POSTAR