locked
Paginando eficientemente usando o Access RRS feed

  • Pergunta

  • Salve!

    Estou desenvolvendo aplicações web aqui na empresa. Por questões de infra-estrutura estou obrigado a usar arquivos do Access 2003 para as bases de dados.

    As aplicações que crio fazem muito uso do controle Gridview do ASPNet 2.0. A paginação deste controle não é muito eficiente. Pesquisando na Web eu achei alguns exemplos interessantes para melhorar a paginação e mesmo a ordenação para o controle. Só que todos os exemplos fazem menção a bancos de dados SQL Server. E aí surgem stored procedures tais como a abaixo em que passaria como parâmetros a página inicial e o tamanho de registros a serem mostrados:

     

    ALTER
     PROCEDURE
     dbo.CustomPaging 
     @PageSize As
     Int
    , 
     @PageNumber As
     Int
     AS
    
    	
     DECLARE
     @COUNTER As
     Int
    
     SET
     @COUNTER = (SELECT
     COUNT
    (*) FROM
     Usuario)
    	
     IF
     @PageNumber = 0
      SET
     @PageNumber = 1
    	
     SELECT
     Nome FROM
     Usuario
      WHERE
     UsuarioID IN
     
       (SELECT
     TOP
    (@PageSize) UsuarioID FROM
     Usuario
        WHERE
     UsuarioID NOT
     IN
     
         (SELECT
     TOP
    (@PageSize * (@PageNumber - 1)) UsuarioID FROM
     Usuario
          ORDER
     BY
     Nome)
       ORDER
     BY
     Nome)
      ORDER
     BY
     Nome
    			
     RETURN
     @COUNTER
    

     

    É possível ter consultas semelhantes no Access 2003?

    Grato pela atenção de todos.

    Paulo Ricardo Ferreira

    sexta-feira, 10 de setembro de 2010 14:03

Respostas

  • Olá Paulo,

     

    não tenho testes para comprovar, mas esta sequência de subconsultas com SELECT parece ser muito, muito pesada mesmo para o SQL Server. Se a paginação do grid não é eficiente, esta proc não parece ser muito melhor. Talvez até seja por ser executada Server Side, mas no caso do Access (que é executado Client Side), certamente ficará pior.

     

    Quanto aos SELECTs, eles até funcionarão no Access, porém a cláusula TOP não pode ir parametrizada, já tem que ser enviada com o número. Portanto, você precisa preparar a instrução por código e passar já pronta ao Access. 


    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    • Marcado como Resposta PRicardo Ferreira segunda-feira, 13 de setembro de 2010 13:13
    sábado, 11 de setembro de 2010 23:32
    Moderador

Todas as Respostas

  • Olá Paulo,

     

    não tenho testes para comprovar, mas esta sequência de subconsultas com SELECT parece ser muito, muito pesada mesmo para o SQL Server. Se a paginação do grid não é eficiente, esta proc não parece ser muito melhor. Talvez até seja por ser executada Server Side, mas no caso do Access (que é executado Client Side), certamente ficará pior.

     

    Quanto aos SELECTs, eles até funcionarão no Access, porém a cláusula TOP não pode ir parametrizada, já tem que ser enviada com o número. Portanto, você precisa preparar a instrução por código e passar já pronta ao Access. 


    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    • Marcado como Resposta PRicardo Ferreira segunda-feira, 13 de setembro de 2010 13:13
    sábado, 11 de setembro de 2010 23:32
    Moderador
  • Caro Luiz Claudio,

    Agradeço as suas explicações. Talvez mantenha então a paginação do grid, já que pelo menos dá menos trabalho e reduz as chances de erros.

    Paulo Ricardo Ferreira

    segunda-feira, 13 de setembro de 2010 13:13