Ir para conteúdo
Fórum Script Brasil
  • 0

Filtro do Relatório


Fabrício.Dias

Pergunta

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 para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...