segunda-feira, 22 de junho de 2009

Rave Report - Problema com Filtro de Relatório

Hoje postarei aqui a solução de um pequeno problema que estava me tirando do sério, e pelo que percebi nas minhas buscas pela intenet muitas pessoas tem esse problema.
Fiz um relatório com o rave report com filtro de data, e também de código de produto, fiz o seguinte esquema, coloquei no comando SQL da minha Query, os parâmetros de data inicial e final e o codigo do produto, e no evento click do botão para gerar o relatório eu passo os parâmetros e executo o relatório, a primeira vez que usei esse esquema funcionou certinho, estava feliz da vida, mas quando fui fazer a mesma coisa em outro projeto, mandava gerar o relatório e ele não mostrava nada, depois de muito me descabelar, encontrei outra solução, trazer todas as informações do banco na Query e filtrar no client Data Set, e quando mandava gerar o relatório, nadaaaa, ele mostrava toda a informação do banco, como se o filtro não estive-se funcionando, foi então que enxerguei a luz, era algo tão simples que nem passava pela minha cabeça....o form que eu chamava o relatório estava como AUTO-CREATE....foi só tirar ele dessa opção que as duas maneiras que eu tinha feito funcionaram....=)
então fica ai a dica para quem estiver com o mesmo problema que eu :
VÁ EM - PROJECT -OPTIONS - e tire o form da opção AUTO-CREATE....e pronto, seja feliz

e para quem não sabe fazer o filtro nem passar parâmetros para a query aqui vai:

PASSANDO PARÂMETRO:

qry_relatorio.Close;
cds_relatorio.Close;
qry_relatorio.ParamByName('data_ini').AsDate := StrToDate(MaskEdit1.Text);
qry_relatorio.ParamByName('data_final').AsDate := StrToDate(MaskEdit2.Text);
qry_relatorio.ParamByName('codigo').AsInteger := StrToInt(edit11.Text);
qry_relatorio.ExecSQL();
qry_relatorio.Open;
qry_relatorio.Refresh;
cds_relatorio.Open;

FILTRANDO O CLIENT DATA SET: (AQUI ESTOU FILTRANDO APENAS POR DATA)

cds_fluxo.Close;
cds_fluxo.Filtered := false;
cds_fluxo.Filter := 'data >='+ QuotedStr(Edit1.Text)+'and data <='+ QuotedStr(Edit2.Text);
cds_fluxo.Filtered := true;
cds_fluxo.Open;
cds_fluxo.Refresh;

Espero ter ajudado, um abraço a todos e até a próxima

5 comentários:

  1. Olá Marcio Rodrigo,

    Meu nome é Laércio,
    Pesquisando na net exatamente sobre gerar relatório por um període de datas (inicial e final), o seu artigo foi o que mais se aproximou da minha dúvida. Gostei muito. Estou iniciando a programação com Delphi, tenho boa base lógica com outros sistemas.
    Se voce tiver mais exemplos com datas, favor postar. Obrigado

    ResponderExcluir
  2. Olá Laércio, fico feliz que tenha ajudado vc...com esses exemplos de data já da pra fazer muita coisa, mas explique pra mim o que mais vc precisa que eu vejo se posso te ajudar. obrigado por entra no meu blog !!

    ResponderExcluir
  3. Olá, meu nome é daniel e fiquei o dia inteiro com esse problema, muito obrigado realmente era o auto-create
    seu blog está nos meus favoritos a partir de hj.. xD

    ResponderExcluir
  4. obrigado, realmente pensava que não tinha mais solução meu problema.

    ResponderExcluir
  5. Muito obrigado mesmo hoje seu post foi de extrema ajuda, agora uma dúvida, você saber o motivo disso acontecer ?

    ResponderExcluir