MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


5 participantes

    [Resolvido]Formulário Lento

    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty [Resolvido]Formulário Lento

    Mensagem  Assis 1/11/2021, 11:44

    Bom dia Amigos

    Formulário "Filtro"

    O exemplo que anexo é muito lento motivado das caixas "Amarelas" onde calcula os totais das colunas da caixa de listagem.

    1 - Tem como fazer esses cálculos de outro modo de maneira a acelerar a abertura do formulário ?

    2 - Quando aberto "demora a abrir" tem uma caixa que mostra o número de registos que tem na tabela . "12500", mas .....

        se digitar qualquer "por exemplo só a letra a " letra na caixa de pesquisa a caixa que mostra o total de registos vai mostrar "0 zero", se limpar a letra  
        digitada com o BACK SPACE a mesma caixa só mostra 5589 registos.

        Devia mostrar os 12500 da tabela  

    Obrigado


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3225
    Registrado : 13/12/2016

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Alexandre Fim 1/11/2021, 13:15

    Ola Assis,

    A função que você está alinhando as colunas a direita está atrapalhando o desempenho do form, pois ela está sendo usada no código e na consulta também.
    Já utilizei esta função em formulário com objetos não vinculados, mas no teu caso não é necessário utilizá-la.

    Na estrutura da tabela, os campos do tipo monetário (Moeda, Numérico e etc) podem ser alinhados "Á Direita", que serão exibidos desta forma na listbox.

    Também não é necessário carregar toda a listbox..carregue-a somente após o filtro.

    Estou fazendo alguns ajustes e em seguida mando a nova versão.

    Aguarde..

    Abraços

    FIM
    José Machado
    José Machado
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/09/2016

    [Resolvido]Formulário Lento Empty Use as querys separadas do formulário, use sub ou function para criar as querys e reaproveitá-las quando precisar.

    Mensagem  José Machado 1/11/2021, 13:33

    Trecho do código para vc testar e adaptar.

    Option Compare Database

    Private Sub btnfechar_Click()
    DoCmd.Close
    End Sub
    Private Sub Form_Load()
    Me.txtpesq.SetFocus
    listar_dados
    get_soma
    End Sub

    Sub listar_dados()
    Dim conexao As DAO.Database
    Dim record_set As DAO.Recordset
    Dim query As String

    query = "SELECT TabRecebimentos.ln, TabRecebimentos.dataft, TabRecebimentos.cliente, TabRecebimentos.tipomov, TabRecebimentos.doc, falta AS Custo, numerario AS Venda, cheque AS Xeque,chequepre AS xequepre, pos AS POSV, TabRecebimentos.banco FROM TabRecebimentos WHERE " & _
    "strConv(cliente, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(tipomov, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(doc, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(Banco, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "*' ORDER BY TabRecebimentos.ln ;"

    Set record_set = CurrentDb.OpenRecordset(query)

    Set Me!Lista1.Recordset = Nothing
    Set Me!Lista1.Recordset = record_set

    Set record_set = Nothing

    End Sub
    Private Sub txtpesq_Change()
    listar_dados
    End Sub
    Sub get_soma()
    Dim conexao As DAO.Database
    Dim record_set As DAO.Recordset

    Dim query As String

    query = "SELECT SUM(falta), SUM(numerario), SUM(cheque),SUM(chequepre), SUM(pos) FROM TabRecebimentos;"

    Set record_set = CurrentDb.OpenRecordset(query)
    Me.sdebito = record_set.Fields(0)
    Me.scredito = record_set.Fields(1)
    Me.svenda = record_set.Fields(2)
    Me.Strans = record_set.Fields(3)

    Set record_set = Nothing
    End Sub
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Assis 1/11/2021, 14:11

    Machado desde já obrigado

    O formulário não carrega os 12 500 registos que tem. Só carrega 5589

    obrigado


    .................................................................................
    *** Só sei que nada sei ***
    José Machado
    José Machado
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/09/2016

    [Resolvido]Formulário Lento Empty Oa critérioa na cláusula WHERE que estão fazendo com que apareçam apenas os registro sob aquelas circunstância

    Mensagem  José Machado 1/11/2021, 17:11

    Substitua
    "strConv(cliente, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(tipomov, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(doc, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(Banco, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "*' ORDER BY TabRecebimentos.ln ;"

    Por isso
    query = "SELECT TabRecebimentos.ln, TabRecebimentos.dataft, TabRecebimentos.cliente, TabRecebimentos.tipomov, TabRecebimentos.doc, falta AS Custo, numerario AS Venda, cheque AS Xeque,chequepre AS xequepre, pos AS POSV, TabRecebimentos.banco FROM TabRecebimentos"
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Assis 1/11/2021, 17:43

    Machado

    Com esta : só mostra só mostra 5589 registos de 12500

    query = "SELECT TabRecebimentos.ln, TabRecebimentos.dataft, TabRecebimentos.cliente, TabRecebimentos.tipomov, TabRecebimentos.doc, falta AS Custo, numerario AS Venda, cheque AS Xeque,chequepre AS xequepre, pos AS POSV, TabRecebimentos.banco FROM TabRecebimentos WHERE " & _
    "strConv(cliente, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(tipomov, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(doc, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(Banco, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "*' ORDER BY TabRecebimentos.ln ;"


    Com esta última mostra os 12500 registos mas não filtra a pesquisa:

    query = "SELECT TabRecebimentos.ln, TabRecebimentos.dataft, TabRecebimentos.cliente, TabRecebimentos.tipomov, TabRecebimentos.doc, falta AS Custo, numerario AS Venda, cheque AS Xeque,chequepre AS xequepre, pos AS POSV, TabRecebimentos.banco FROM TabRecebimentos"





    .................................................................................
    *** Só sei que nada sei ***
    José Machado
    José Machado
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 13/09/2016

    [Resolvido]Formulário Lento Empty Veja esse código

    Mensagem  José Machado 1/11/2021, 17:58

    Sub listar_dados()
    Dim conexao As DAO.Database
    Dim record_set As DAO.Recordset
    Dim query As String

    query = "SELECT TabRecebimentos.ln, TabRecebimentos.dataft, TabRecebimentos.cliente, TabRecebimentos.tipomov, TabRecebimentos.doc, falta AS Custo, numerario AS Venda, cheque AS Xeque,chequepre AS xequepre, pos AS POSV, TabRecebimentos.banco FROM TabRecebimentos"
    If Len(txtpesq) > 0 Then
    query = query & _
    " WHERE " & _
    "strConv(cliente, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(tipomov, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(doc, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "'" & _
    "OR strConv(Banco, 2) like '" & StrConv(Me!txtpesq.Text, 2) & "*' ORDER BY TabRecebimentos.ln ;"
    End If
    Set record_set = CurrentDb.OpenRecordset(query)

    Set Me!Lista1.Recordset = Nothing
    Set Me!Lista1.Recordset = record_set
    TxtC = Me!Lista1.ListCount
    Set record_set = Nothing
    End Sub
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Assis 1/11/2021, 18:07

    Não pesquisa


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3225
    Registrado : 13/12/2016

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Alexandre Fim 1/11/2021, 22:02

    Olá Assis,

    Segue versão ajustada do teu sistema.

    Boa sorte.

    Att,

    Alexandre Fim
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Assis 1/11/2021, 23:41

    Boa noite Alexandre e Obrigado

    Porque depois de abrir o formulário ao digitar a primeira letra no campo de pesquisar a última coluna "Banco" dica toda nulo.

    [Resolvido]Formulário Lento Sem_t231


    .................................................................................
    *** Só sei que nada sei ***
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  DamascenoJr. 2/11/2021, 12:36

    Assis, é bem fácil de você mesmo resolver. Vamos ao passo a passo.

    1 - Sabemos que a caixa de listagem traz valores conforme uma instrução SQL do tipo SELECT.
    2 - Sabemos que o Alexandre mexeu aí.
    3 - Se trazia antes e agora não traz mais, então o Alexandre esqueceu um pequeno detalhe.
    4 - Sabemos que o Alexandre não bloqueou o código e que é possível fazer mais ajustes.
    5 - Sabemos que isso só ocorre após alguma letra ser digitada, então basta acessar o evento "Ao alterar".
    6 - E agora basta inserir na instrução SQL que também traga o campo "Banco" em sua busca de dados para que tal campo volte a aparecer na caixa de listagem.

    [Resolvido]Formulário Lento Imgass10

    Não há segredos e não é difícil que nós mesmos busquemos solucionar pequenos problemas.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Assis 2/11/2021, 12:49

    Bom dia Damasceno

    Já tentei mas não resulta. Veja

    Obrigado

    [Resolvido]Formulário Lento Sem_t232


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    Kaynan
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2974
    Registrado : 09/04/2012

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Kaynan 2/11/2021, 13:11

    Desculpe me entrometer com os mestres.

    Assis tire o ;
     sSQL = Empty
       sSQL = sSQL & " SELECT TabRecebimentos.ln,"
       sSQL = sSQL & "        TabRecebimentos.dataft,"
       sSQL = sSQL & "        TabRecebimentos.cliente,"
       sSQL = sSQL & "        TabRecebimentos.tipomov,"
       sSQL = sSQL & "        TabRecebimentos.doc,"
       sSQL = sSQL & "        TabRecebimentos.falta,"
       sSQL = sSQL & "        TabRecebimentos.numerario,"
       sSQL = sSQL & "        TabRecebimentos.cheque,"
       sSQL = sSQL & "        TabRecebimentos.chequepre,"
       sSQL = sSQL & "        TabRecebimentos.pos"
       sSQL = sSQL & "      TabRecebimentos.Banco"
       sSQL = sSQL & " FROM TabRecebimentos"
       sSQL = sSQL & " WHERE  (((TabRecebimentos.cliente)      LIKE '*" & Trim(txtpesq.Text) & "*'))"
       sSQL = sSQL & "         OR (((TabRecebimentos.tipomov)  LIKE '*" & Trim(txtpesq.Text) & "*'))"
       sSQL = sSQL & "         OR (((TabRecebimentos.doc)      LIKE '*" & Trim(txtpesq.Text) & "*'))"
       sSQL = sSQL & "         OR (((TabRecebimentos.banco)    LIKE '*" & Trim(txtpesq.Text) & "*'))"
       sSQL = sSQL & " GROUP  BY TabRecebimentos.ln,"
       sSQL = sSQL & "           TabRecebimentos.dataft,"
       sSQL = sSQL & "           TabRecebimentos.cliente,"
       sSQL = sSQL & "           TabRecebimentos.tipomov,"
       sSQL = sSQL & "           TabRecebimentos.doc,"
       sSQL = sSQL & "           TabRecebimentos.falta,"
       sSQL = sSQL & "           TabRecebimentos.numerario,"
       sSQL = sSQL & "           TabRecebimentos.cheque,"
       sSQL = sSQL & "           TabRecebimentos.chequepre,"
       sSQL = sSQL & "           TabRecebimentos.pos;"
       sSQL = sSQL & "           TabRecebimentos.Banco """
       Me.Lista1.RowSource = sSQL
       Me.Lista1.Requery
       
       Me.lblregs.Caption = "Registros: " & Me.Lista1.ListCount & ""
         
       
       Call CalcTotais
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Assis 2/11/2021, 13:20

    Testou Kaynan ?

    Aqui não funciona


    .................................................................................
    *** Só sei que nada sei ***
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  DamascenoJr. 2/11/2021, 13:23

    Assim como o Alexandre esqueceu um detalhe, cá eu também esqueci outro. Ambos facilmente resolvidos.

    1 - A separação dos campos trazidos na SQL é feita com vírgulas
    2 - Está faltando a vírgula que separa o campo banco que será trazido

    sSQL = sSQL & "        TabRecebimentos.chequepre,"
    sSQL = sSQL & "        TabRecebimentos.pos,"
    sSQL = sSQL & "      TabRecebimentos.Banco"


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  DamascenoJr. 2/11/2021, 13:24

    Lembrando que está faltando nos dois locais onde houve alteração!


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    avatar
    Kaynan
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2974
    Registrado : 09/04/2012

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Kaynan 2/11/2021, 13:32


    Aqui só não esta filtrando.
    dropbox.com/s/zwtlrxcx8hkf576/test.png?dl=0
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Assis 2/11/2021, 13:36

    Obrigado Alexandre Fim

    Ficou rápido

    Obrigado Machado

    Obrigado Damasceno pela correção final


    .................................................................................
    *** Só sei que nada sei ***
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3225
    Registrado : 13/12/2016

    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Alexandre Fim 2/11/2021, 15:10

    @DamascenoJr grande mestre,

    A 1a. versão que o Assis mandou não estava filtrando nada...rsss
    Fiz os ajustes necessários para melhorar o desempenho do sistema e também ajustar o filtro....é isso !!!
    Sempre passa algum detalhe...rssss
    O importante que todos aqui deste post ajudou e resolveu o problema.

    Parabéns a todos!!



    Conteúdo patrocinado


    [Resolvido]Formulário Lento Empty Re: [Resolvido]Formulário Lento

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 6/5/2024, 22:02