none
Como limitar o números de linhas em uma tabela?

    Question

  •  

    O Relatórió já está pronto e funcionando e nele tem uma tabela que pode trazer até 8 mil linhas, preciso que ele só retorne até 200 linhas, e se ultrapassar essa quantidade deve apareceer uma mensagem divulgando o excesso delinhas e que só pode mostrar até 200, tem como fazer isso?
    Tuesday, January 06, 2009 8:28 PM

All replies

  • Shatemui,

     

    Você poderia limitar a quantidade de linhas diretamente na query utilizando por exemplo a claúsula Top, mas o que você esta querendo na verdade é que no momento da geração do relatório, seja feita uma análise para identificar a quantidade de linhas que estão sendo impressas.

     

    Pensei em utilizar uma variável que poderia ser incrementada durante o processamento de cada linha, ou então criar um expressão que conte as linhas, mas não sei exatamente se vai trabalhar da maneira desejada.

    Wednesday, January 07, 2009 10:27 AM
  • Esse processo de contagem de linhas posso usar o CountRows ou o RowNumber.

    Poderia dar um exemplo desse incrementação e onde deveria ficar essa variável?
    Wednesday, January 07, 2009 12:18 PM
  • Shatemui,

     

    Achoo que o CountRows seria uma solução interessante.

     

    Em relação a incrementação da variável preciso pensar um pouco como poderia montar um exemplo, vou ver.

     

    Wednesday, January 07, 2009 1:10 PM
  • Olá Shatemui,

     

    Eu reproduzí o seu caso, da seguinte forma:

     

    1° Passo

    Criei uma condição que só executará o select de acordo com a condição de o select não retornar mais de 200 registros, veja abaixo o exemplo:

    Code Snippet

     

    if (select count(1) from teste) <200

    select * from teste

     

     

    Ou seja, caso o select da condição posua menos de 200 registro a condição será será verdadeira e assiml, executará o select que retornará os dados para o dataset.

     

    Desvantagens:

    - Por existir 2 sentenças, haverá uma carga maior de processamento, pois a primeira reazará um count e a outra retornará os dados.

    - Caso, vc possua parametros, estes deverão vir junto ao select, exemplo:

    digamos que o seu relatório possua os parametros, data_inicial, Data_final e status, então, o select no dataset teria que ser algo como:

     

    Code Snippet

     

    if (select count(1) from teste where data>=@parametro_data_inicial and data>=@parametro_data_final and status=@status) <200

    select * from teste  where data>=@parametro_data_inicial and data>=@parametro_data_final and status=@status

     

     

    Isso se justifica devido a necessidade de ainda no dataset a condição ter que saber o real número de registros do para preecher o dataset com os dados.

     

    2° Passo

    Em caso de a condição do número de registros não ser satisfatória, ou seja, o número de registros for maior que o permitido, então, pela nossa lógica, o resultado da sentença acima será "NULL", dessa forma vc pode utilizar a propriedade "NoRows" para colocar um aviso para os usuários informando sobre a impossibilidade de execução do relatório
    Saturday, January 10, 2009 11:42 PM
  • Boa tarde Shatemui,

    Você conseguiu resolver seu problema? Eu encontrei uma solução um pouco mais funcional.

    Caso você deseja saber qual, me reporte.


    Rodrigo Ataíde.
    Tuesday, December 06, 2011 6:58 PM