Filtro para Relatórios

Delphi

26/10/2008

Bom é segunte, tenho que fazer um filtro para um relatório onde tenho um checkbox quando selecionado imprimirá todas as vendas de todos os vendedores cadastrados por exemplo, e tenho outra opção que está no Edit que receberá o codigo de um vendedor e imprimirá as vendas somente daquele vendedor, o problema é não estou conseguindo fazer essa programação, estou utilizando Delphi 7 com firebird e para os relatórios utilizo o Rave, essa parte do Edit está dificil pra mim resolver, a parte do checkbox até acertei !

procedure TFiltroRelComissao.BitBtn1Click(Sender : TObject);
begin
    with DM.qRelComissao do 
    begin
      if checkbox1.Checked = true then
      begin 
         DM.qRelComissao.Active:= False;
         DM.qRelComissao.ParamByName(´pDataIni´).asDate:= strtodate(DataIni.Text);
         DM.qRelComissao.ParamByName(´pDataFini´).asDate:= strtodate(DataFin.Text);
         DM.qRelComissao.Open;
         DM.rvComissao.ExecuteReport(´Report1´);
    end;
end;
end;



Afterdev

Afterdev

Curtidas 0

Respostas

Paulo

Paulo

26/10/2008

Olá eder. Normalmente quando fazemos query dinâmicas, utilizamos uma quary base e depois de acordo com as informações das, se vai acrescentado condiçoes. Eu faria assim:

with clientdataset, params do
begin 
  CommandText:= ´SELECT * FROM TABELA WHERE´;

  if CheckBox1.Checked then
    CommandText := CommandText + ´ CampoData >= :pDataIni and   CampoData <= :pDataFim´;
  ParamByName(´pDataIni´).AsDate := strtodate(DataIni.Text);
  ParamByName(´pDataFim´).AsDate := strtodate(DataFim.Text);
  Open;
end;

caso não use ClientdataSet, substitua o código referente ao ClientDataSet pelo de seu componente.


GOSTEI 0
Afterdev

Afterdev

26/10/2008

Paulo blz amigo, entendi como você mostrou mas, meu problema é em ralção ao edit onde tenho que digitar o código do vendedor num edit.text e me retornar os dados referentes a esse vendedor, não sei se tenho que criar um parametro no RAVE, ou no form estou perdido em relação a isto.

valeu.......


GOSTEI 0
Afterdev

Afterdev

26/10/2008

Estou tentando fazer um filtro por codigo e não estoiu conseguindo, como posso resolver.....

procedure TFiltroRelComissao.BitBtn1Click(Sender: TObject);
begin
  with DM.qRelComissao do
  begin
  if checkbox1.Checked then
  begin
    DM.qRelComissao.Active:= False;
    DM.qRelComissao.ParamByName(´pDataIni´).AsDate:= strtodate(DataIni.Text);
    DM.qRelComissao.ParamByName(´pDataFin´).AsDate:= strtodate(DataFin.Text);
    DM.qRelComissao.Open;
    DM.rvComissao.ExecuteReport(´Report1´);
  end
  else
    DM.qRelComissao.SQL.Add(´select tb_vendedor.nome,tb_venda.datavenda,tb_venda.numvenda´);
    DM.qRelComissao.SQL.Add(´tb_cliente.nome,tb_venda.vlrtotal, tb_vendedor.perc_comissao, sum(tb_venda.vlrtotal * tb_vendedor.perc_comissao/100) as valorComissao´);
    DM.qRelComissao.SQL.Add(´from tb_venda, tb_cliente, tb_vendedor´);
    DM.qRelComissao.SQL.Add(´where tb_venda.idvendedor = tb_vendedor.idvendedor and tb_venda.idcliente = tb_cliente.idcliente´);
    DM.qRelComissao.SQL.Add(´and tb_vendedor.idvendedor= :pCodigo´);
    DM.qRelComissao.SQL.Add(´and tb_venda.datavenda between :pDataIni and :pDataFin´);
    DM.qRelComissao.SQL.Add(´group by tb_vendedor.nome,tb_venda.datavenda,tb_venda.numvenda´);
    DM.qRelComissao.SQL.Add(´tb_cliente.nome,tb_venda.vlrtotal,tb_vendedor.perc_comissao´);
    DM.qRelComissao.ParamByName(´pCodigo´).AsInteger:= strtoint(Edit1.Text);
    DM.qRelComissao.Open;
    DM.rvComissao.ExecuteReport(´Report1´);
  end;
end;


no caso estou utilizando o Rave para os relatórios, não está dando certo.......


GOSTEI 0
POSTAR