Filtro para Relatórios
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
Curtidas 0
Respostas
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:
caso não use ClientdataSet, substitua o código referente ao ClientDataSet pelo de seu componente.
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
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.......
valeu.......
GOSTEI 0
Afterdev
26/10/2008
Estou tentando fazer um filtro por codigo e não estoiu conseguindo, como posso resolver.....
no caso estou utilizando o Rave para os relatórios, não está dando certo.......
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