Caro Flavio,
Apesar de só ter visto seu problema agora, passei por algo semelhante - só que com mais de 100.000 registros na tabela (em um formulário) -. mesmo usando o SC9, e encontrei uma “solução deselegante” para esse problema - enquanto a SC não responde o chamado que abri.
No campo Where (Menu Vertical >> Formulário >> SQL), coloque (sem ; no final): [ suas condições, se tiver + ] and id_da_tabela >= ( (select max(id_da_tabela) from tabela) - 9 )
E no campo Ordenação (ainda no SQL), adicione: [ seu código, caso haja, lembre-se de adicionar uma vírgula aqui , + ] id_da_tabela DESC
Obs.: isso funcionará considerando que o campo id_da_tabela seja auto-incrementável. Para relatórios, basta fazer o mesmo no SQL da grid. Note que - 9 (menos nove) trará 10 (dez) registros, pois na condição há >= (maior OU igual), isso incluirá um registro a mais. Portanto, se colocar - 10 (menos dez), retornarão os últimos 11 (onze) registros, e assim por diante.
Essa “solução” genérica deverá funcionar para a maioria dos casos, pois quase sempre há um campo de id na tabela, mas nem sempre ou necessariamente um de data/time.
Agora, o “feito colateral”: na busca rápida, só estarão disponíveis os registos resultantes da query (os últimos 10) que estão no cache / sessão. Para buscar em todos os registros, provavelmente será necessário adicionar um campo personalizado de busca para fazer um full scan na tabela e atualizar / modificar a query (que certamente deverá estar em uma variável) - gambiarra que (ainda) não fiz.
Espero, sinceramente, que a SC apresente uma solução elegante para o problema ou disponibilize uma atualização com a melhoria para essa limitação.
Faças as adequações para a sua necessidade.