Fórum Utilizando o like #392926
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.
Posts
21/12/2010
Junior Miranda
Blza?
Disponibiliza o código entre as tags.
[]'s
22/12/2010
Emerson Nascimento
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;
EMERSON,
Muito obrigado com as alterações que você fez funcionou perfeito. Obrigado.