MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    EduardoPires
    EduardoPires
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 16/12/2012

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  EduardoPires em 4/12/2018, 21:12

    Amigos, boa tarde. Tenho um banco de dados Access, e tanto em caso de formulários com subformulários, ou com formulários com listbox, estou passando por uma dificuldade que com a ajuda de vocês vou resolver. Toda vez que o usuário abre esse formulário, um formulário de entrega de produtos locados, com a listbox por exemplo, existe por trás da listbox uma consulta que me traz os registros das entregas da semana. Ocorre que para carregar esses registros e me trazer a tela com os filtros pré definidos, ele carrega toda a tabela do banco de dados, e a tela demora um pouco. Atualmente tem mais de 100.000 registros. Fiz um teste com uma tabela de 1.000 registros por exemplo e a performace é totalmente diferente, mesmo em rede de 20 usuários. Alugém pode me auxiliar de alguma forma, ou tem algum exemplo para postar, que eu possa carregar esse formulário com o subformulário ou a listbox, e que no momento de abrir ou de fazer algum filtro depois de aberto, não precise carregar todos os registros da tabela? Ou que carregue de uma forma que não pese tanto o formulário, pois trata-se de uma consulta Select. Então, preciso da orientação de vocês, como proceder, Uma consulta que seja mais adequada ou um código... Algo que não possa transformar a utilização da referida tela em um pesadelo.

    Agradeço a todos.

    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 588
    Registrado : 22/11/2016

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  IvanJr. em 4/12/2018, 22:29

    Ocorre que para carregar esses registros e me trazer a tela com os filtros pré definidos, ele carrega toda a tabela do banco de dados, e a tela demora um pouco.

    Então por que já não carrega a tabela só com registros que atendam aos filtros pré definidos ao invés de toda a tabela do banco de dados?

    Outra sugestão seria já não ir carregando a listbox de "primeirona". Só carrega-la após o usuários preencher os campos de filtro e clicar em um botão que ativa o filtro e só então nesse momento ir buscar os dados na tabela do banco de dados.
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 588
    Registrado : 22/11/2016

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  IvanJr. em 18/12/2018, 12:15

    Eduardo, como ficou seu caso? Resolveu?


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    EduardoPires
    EduardoPires
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 16/12/2012

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  EduardoPires em 14/1/2019, 08:49

    Ivan, obrigado pela dica. A questão é que "na origem da linha" da listbox, já fica definido a consulta que irá obedecer aos filtros, e como essa consulta fica já definida dentro da list, automaticamente carrega sem ser pelos filtros. Você pode me orientar como não precisar de deixar essa consulta na "Origem da linha" do listbox e mesmo assim me trazer os dados quando aplicado qualquer filtro imposto?
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 588
    Registrado : 22/11/2016

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  IvanJr. em 14/1/2019, 11:51

    Você pode alterar a propriedade RowSource (origem da linha) e só carregar a listbox no momento que achar adequado.

    Veja AS DICAS do artigo do link abaixo, em especial a dica 6
    (https)://www.usandoaccess.com.br/dicas/gerar-milhoes-registros-teste-access.asp

    obs.: remova os parênteses do https


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  Dilson em 14/1/2019, 15:34

    Bom dia !

    Acrescentar que pode ser usado a cláusula LIMIT, sendo uma das melhores práticas usá-la.

    Eu faço isso constantemente, por exemplo: A tabela tem 5.000 registros. Eu carrego na ListBox somente 500 e a partir daí o usuário por meio da busca encontra o que procura e na busca uso novamente o LIMIT.




    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 588
    Registrado : 22/11/2016

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  IvanJr. em 14/1/2019, 20:02

    Boa, Dilson, afinal de contas os usuários não olham linha a linha quando muitos registros são retornados em uma busca, mas sim refinam mais ainda a pesquisa. Boa dica. Mas ei... LIMIT? Não seria o TOP?


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    Dilson
    Dilson
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  Dilson em 14/1/2019, 23:38

    Verdade meu amigo, no vba usamos TOP ao invés de LIMIT.

    Isso é o mal de quem programa em mais de uma linguagem, confundir funções iguais de nomes diferentes. Uso LIMIT no SQL do PHP. No PHP por exemplo o uso do LIMIT é inevitável. As hospedagens fazem monitoramento das queries e aquelas que funcionam com lentidão nos são informadas e somos praticamente intimados a dar jeito e a cláusula LIMIT resolveu meu problema. Em programas Access VBA em alguma janelas abandonei a pesquisa no evento ao alterar e empreguei depois do Enter com o uso do TOP na instrução SQL e queixas de usuários por conta de lentidão na busca acabou.
    EduardoPires
    EduardoPires
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 16/12/2012

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  EduardoPires em 19/1/2019, 19:49

    Obrigado pelas dicas amigos. Vou tentar então utilizar o Select Top 500 por exemplo... Acredito que realmente vai facilitar bastante, pois fica limitado. Talvez dependendo do que quero buscar, posso trabalhar também com Select Top 100 / Top 50.... Ficará mais rápida ainda.

    EduardoPires
    EduardoPires
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 16/12/2012

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  EduardoPires em 19/1/2019, 20:04

    Pessoal, acabei de testar e foi perfeito e muito simples de resolver.

    Tenho uma tabela de locações, e semanalmente a empresa tem um número de produtos para entregar, mas nunca superior a 300. Varia de 100 a 200; Ao invés de carregar sempre mais de 50/ 100 mil registros e sempre que abria ou fazia um filtro, carregava todos os registros e ficava muito lento, principalmente quando utilizada por mais de 10 usuários simultâneos. Simplesmente acrescentei o TOP 300 após a função select, e a performace é outra, abre igual um foguetinho.

    Ficou assim: SELECT TOP 300 TBL_LOCACOES.ID AS Locação, Tbl_Clientes.Codigo, tbl_status_produto_logistica.Id_statusproduto, tbl_categoriaproduto_geral.Id_Categoria_Geral...

    Vou deixar aberto para caso alguém queira comentar, mas por mim esse tópico tá encerrado. Obrigado Dilson, e obrigado também Ivan Jr


    Conteúdo patrocinado

    Formulário com list box ou subformulário pesado devido a muitos registros na tabela Empty Re: Formulário com list box ou subformulário pesado devido a muitos registros na tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 20/6/2019, 12:42