Jump to content
Fórum Script Brasil
  • 0

Filtro do Relatório


Fabrício.Dias

Question

Senhores, boa noite.

Estou iniciando em Crystal e gostaria de saber qual a melhor maneira de tratar filtros do relatório. O objetivo é ter uma tela de filtros na aplicação e passar para o Crystal. Já vi aqui no forum como isso é possível. Estava pensando em montar o SQL dentro do Crystal e na cláusula WHERE adicionar os parâmetros.

Mas, a tela de filtro terá várias opções e nem todas elas serão obrigatórias.

1. Assim, tem como montar na cláusula WHERE dentro de crystal e só aplicar os filtros que foram passados?

2. Qual a melhor maneira para fazer isso?

Obrigado pela atenção.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

fabricio, pra isso você usa o record selection formula (em menu Report -> Edit Selection Formula -> Record...)

ele funciona como a clausula WHERE. exemplo, se você quiser filtrar todos os registros onde o campo1 for diferente de 0, você simplesmente escreve la dentro:

{Tabela1.Campo1} <> 0

aqui tem um exemplo de como editar o selection formula via codigo pelo vb6: http://scriptbrasil.com.br/forum/index.php?showtopic=122749

Link to comment
Share on other sites

  • 0

Kuroi, boa noite.

Obrigado pela resposta e desculpa-me por não respondido antes, pois estive em viagem a trabalho e não tive tempo...

Enfim, o que também preciso saber é o que é mais otimizado? Ou seja, criar a instrução WHERE ou criar o DataSet e passar como parâmetro ou criar a instrução na Record Selection Formula????

Preciso pensar nisso, pois é uma aplicação Web e o número de acesso simultâneo é muito grande...

Obrigado mais uma vez pela atenção.

Abraços

fabricio, pra isso você usa o record selection formula (em menu Report -> Edit Selection Formula -> Record...)

ele funciona como a clausula WHERE. exemplo, se você quiser filtrar todos os registros onde o campo1 for diferente de 0, você simplesmente escreve la dentro:

{Tabela1.Campo1} <> 0

aqui tem um exemplo de como editar o selection formula via codigo pelo vb6: http://scriptbrasil.com.br/forum/index.php?showtopic=122749

Link to comment
Share on other sites

  • 0
Enfim, o que também preciso saber é o que é mais otimizado? Ou seja, criar a instrução WHERE ou criar o DataSet e passar como parâmetro ou criar a instrução na Record Selection Formula????

hum... é uma boa pergunta...

não sei se tem mta diferenca pra selecionar os dados, o crystal tb é bem otimizado.

mas acho q se você seleciona os dados na memoria e depois envia pro crystal ler novamente, provavelmente alocando uma copia dos mesmos dados em um novo espaco de memoria, deve ser mais lento.

eu diria q usar o WHERE no crystal seria mais rapido do q passar um DataSet, alem de ocupar menos memoria. mas o melhor jeito de testar seria usar uma base de dados bem gde e fazer um teste com os dois modos pra ver qual leva mais tempo.

Link to comment
Share on other sites

  • 0

Obrigado Kuroi. Vou fazer testes...

Enfim, o que também preciso saber é o que é mais otimizado? Ou seja, criar a instrução WHERE ou criar o DataSet e passar como parâmetro ou criar a instrução na Record Selection Formula????

hum... é uma boa pergunta...

não sei se tem mta diferenca pra selecionar os dados, o crystal tb é bem otimizado.

mas acho q se você seleciona os dados na memoria e depois envia pro crystal ler novamente, provavelmente alocando uma copia dos mesmos dados em um novo espaco de memoria, deve ser mais lento.

eu diria q usar o WHERE no crystal seria mais rapido do q passar um DataSet, alem de ocupar menos memoria. mas o melhor jeito de testar seria usar uma base de dados bem gde e fazer um teste com os dois modos pra ver qual leva mais tempo.

Link to comment
Share on other sites

  • 0
mas acho q se você seleciona os dados na memoria e depois envia pro crystal ler novamente, provavelmente alocando uma copia dos mesmos dados em um novo espaco de memoria, deve ser mais lento.

só complementando, no meu entender, logicamente o crystal deve ler os dados muito mais rapido a partir da memoria do q se tivesse q ler direto do banco.

ou seja, dentro do crystal a operacao sera muito mais otimizada se você ler a partir do dataset. a perda de performance aconteceria no conjunto das operacoes, ao ler os dados no banco pela aplicacao e depois copiar pro crystal. sendo assim, caso você já tenha o dataset carregado por algum motivo qualquer, ou seja, se independente do crystal reports, você já tenha a selecao na memoria, então seria interessante passa-la para o crystal do q fazer o crystal selecionar novamente a mesma coisa.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      651.8k
×
×
  • Create New...