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

Pergunta
-
Todas as Respostas
-
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.
-
-
-
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 Snippetif
(select count(1) from teste) <200select
* from testeOu 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 Snippetif
(select count(1) from teste where data>=@parametro_data_inicial and data>=@parametro_data_final and status=@status) <200select
* from teste where data>=@parametro_data_inicial and data>=@parametro_data_final and status=@statusIsso 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 -