Barra de Progressão do MS-Access

É comum o programador percorrer uma tabela ou consulta com muitos registros executando determinada função, coletando valores, etc. Dependendo do número de registros a rotina poderá demorar um pouco. O usuário, se não visualizar nenhuma atividade, poderá pensar que o sistema travou ou não iniciou a execução do código solicitado. Para resolver isso o programador poderá mostrar o progresso da execução do código na barra de progressão do próprio MS-Access localizado na parte inferior esquerda da tela: moz-screenshot-1

Vamos aprender a utilizar esse recurso simples de barra de progresso do MS-Access

Se você quer escrever apenas uma mensagem utilize o seguinte código:
--------------------------------------------------------------------------------------------------------------------------------
SysCmd acSysCmdSetStatus, "Apontamento de Campo concluído com sucesso."
----------------------------------------------------------------

Barra de Progressão:

são 3 comandos:

SysCmd 1, Texto, QtdTotal    Valor inicial
SysCmd 2, Contador        atualiza
SysCmd 3            esvazia barra de progressão

onde

     1 = acSysCmdInitMeter
     2 = acSysCmdUpdateMeter   
     3 = acSysCmdRemoveMeter

Exemplo:

No exemplo abaixo todos os registro de uma tabela chamada "Pagamentos" são percorridos

----------------------------------------------------------------

Public Function NomeFuncao()

On Error GoTo Fim
    Dim db As DAO.Database
    Set db = CurrentDb()
    Dim rs As DAO.Recordset
    Set rs = db.OpenRecordset("Pagamentos") 'tabela de contas a pagar
    Dim lQtd As Long    'variável que recebe a quantidade total de registros
    'conta o número de registros
    rs.MoveLast
    lQtd = rs.RecordCount

    SysCmd 1, "Aguarde... Percorrendo a Tabela de Contas A Pagar...", lQtd 'inicia a barra de progressão
    'variável que irá contar os registros
    Dim lContador As Long
    lContador = 0
    'loop que irá percorrer a tabela
    rs.MoveFirst    'vai para o primeiro registro
    Do While Not rs.EOF
        DoEvents    'executa em segundo plano
        '------------------------------------------------
        'aqui você insere seu código...
        '------------------------------------------------
        lContador = lContador + 1 'acrescenta 1 na quantidade
        SysCmd 2, lContador     'atualiza visão da barra de progressão
        rs.MoveNext 'proximo registro
    Loop
    MsgBox lContador & " registros foram percorridos"
    SysCmd 3 'limpa a barra de progressão
    Exit Function

Fim:
    SysCmd 3   
    MsgBox Err.Number & " - " & Err.Description
    Exit Function

End Function

----------------------------------------------------------------

Nenhum comentário:

Postar um comentário