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


2 participantes

    Barra de progresso para recordset ADO em formulários continuos

    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Barra de progresso para recordset ADO em formulários continuos Empty Barra de progresso para recordset ADO em formulários continuos

    Mensagem  Motar 2/12/2014, 10:13

    Olá a todos, agradecia vossa ajuda no seguinte:
    Utilizo a função abaixo para mostrar e filtrar dados num formulario continuo desvinculado, mas quando os dados a exibir são superiores a 1000 as vezes pode demorar mais de 10 segundos a mostrar a informação, tem como associar a esta função uma barra de progresso para o utilizador ter informação do tempo que ainda vai demorar a processar a informação?

    Function FuncAdoDadosForm(SelForm As Object, SelView As String)
    FormAtivo = SelForm.Name
    Call ConServer
    If rsfc.State = 1 Then
    rsfc.Close
    End If
    Set rsfc = New ADODB.Recordset
    Dim sql As String
    Dim FormFiltro As String

    If Left(SelForm.SelFormFiltro, 7) = " WHERE " Then
    If SelForm.SelFormOrd = "" Then
    sql = "SELECT * FROM " & SelView & SelForm.SelFormFiltro
    Else
    sql = "SELECT * FROM " & SelView & SelForm.SelFormFiltro & " ORDER BY " & SelForm.SelFormOrd
    End If
    rsfc.Open sql, CON, adOpenKeyset, adLockReadOnly, adCmdText
    Else
    If SelForm.SelFormOrd = "" Then
    sql = "SELECT * FROM " & SelView
    Else
    sql = "SELECT * FROM " & SelView & " ORDER BY " & SelForm.SelFormOrd
    End If
    rsfc.Open sql, CON, adOpenKeyset, adLockReadOnly, adCmdText
    If SelForm.SelFormFiltro <> "" Then
    FormFiltro = Screen.ActiveForm.SelFormFiltro
    rsfc.Filter = FormFiltro
    End If
    End If

    Set SelForm.Recordset = rsfc
    End Function
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Barra de progresso para recordset ADO em formulários continuos Empty Re: Barra de progresso para recordset ADO em formulários continuos

    Mensagem  criquio 2/12/2014, 10:53

    Tem que ser desvinculado mesmo? Não serve colocando a sql na origem do formulário? Ou talvez usando DAO ao invés do ADO. Em alguns testes trabalhando com Access apenas o DAO me foi bem mais rápido do que o ADO e o ADO mais rápido quando acessando dados do Access à partir de outro aplicativo como o Excel.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Barra de progresso para recordset ADO em formulários continuos Empty Re: Barra de progresso para recordset ADO em formulários continuos

    Mensagem  Motar 2/12/2014, 11:08

    Nesta situação tem de ser desvinculado mesmo, como os dados são provenientes do SQL Server fiz o teste e o ADO é mais ápido que o DAO
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Barra de progresso para recordset ADO em formulários continuos Empty Re: Barra de progresso para recordset ADO em formulários continuos

    Mensagem  criquio 2/12/2014, 11:14

    Bem, para fazer uma barra de progresso você vai precisar do total de registros e calcular a porcentagem já atualizada e com base na porcentagem e no tamanho final que a barra atingirá fazer ela ir aumentando de tamanho de acordo essa porcentagem. Mas isso vai deixar o processo ainda mais lento. Eu colocaria apenas um label escrito "Atualizando. Esse processo poderá demorar vários segundos." Assim, não influenciaria no tempo.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Barra de progresso para recordset ADO em formulários continuos Empty Re: Barra de progresso para recordset ADO em formulários continuos

    Mensagem  Motar 2/12/2014, 11:44

    Obrigado pela dica, mas exibir uma mensagem não dá a percepção ao utilizador do tempo que ainda falta, eu gostaria era que fosse algo que não prejudicasse o tempo de execução em mais de 2 segundos, nalguns softwares vesse a barra de progresso no vba não será possivel?
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Barra de progresso para recordset ADO em formulários continuos Empty Re: Barra de progresso para recordset ADO em formulários continuos

    Mensagem  criquio 2/12/2014, 15:05

    Sim, é possível mas do jeito que mencionei. Vai interferir na performance, talvez mais de 2 segundos, pois ao mesmo tempo que atualiza os dados, estará também atualizando a barra de progresso. É serviço extra para a função.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Motar
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 150
    Registrado : 03/08/2010

    Barra de progresso para recordset ADO em formulários continuos Empty Re: Barra de progresso para recordset ADO em formulários continuos

    Mensagem  Motar 2/12/2014, 15:18

    Mas no meu exemplo como eu poderei saber em que registo vai se não uso o comando .Movenext ?
    Atribuo os registos de uma só vez Set SelForm.Recordset = rsfc

    Conteúdo patrocinado


    Barra de progresso para recordset ADO em formulários continuos Empty Re: Barra de progresso para recordset ADO em formulários continuos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 01:28