... Pague apenas R$47,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Configurando as "Opções do Access" pelo setOption

Você acabou de aprontar um aplicativo para o seu cliente.  Realizou todos os testes possíveis na sua máquina e verificou que tudo está funcionando "redondinho". Porém, após ter instalado o aplicativo na máquina do cliente e iniciado os testes, constata que o aplicativo começa a apresentar mensagens que você jura ter configurado, para que não aparecessem.   Por exemplo: você havia configurado para que a mensagem padrão de confirmação do Access não fosse exibida na execução das consultas de ação e também zerou a lista de Documentos Recentes para que não fosse exibida pelo Botão do Office (Arquivo, no Access 2010), mas nada disso fez efeito na máquina do cliente.  Esta é uma situação muito comum de acontecer, por isso, vamos esclarecer o por que você foi pego de surpresa:

Observe o quadro de configurações das "Opções do Access":

Opções do Access

Quaisquer alterações que você realizar na guia Banco de Dados Atual serão salvas no seu aplicativo.  Isto significa que estas configurações não se perderão, independente de qual computador você venha a rodar o aplicativo.  

Contudo, quaisquer alterações que você realizar nas outras guias, estará alterando o Access do seu computador. Se rodar o aplicativo em outro computador ou até mesmo, se mudar de usuário no seu próprio computador, as alterações realizadas não estarão presentes.  Logo, você terá que refazer as configurações, manualmente ou poderá programar o seu aplicativo para realizar as alterações, via código.  

Vale à pena ressaltar que você estará modificando as configurações do Access do computador do cliente, o que considero não muito correto, principalmente se pretende distribuir o seu aplicativo pela internet ou outros meios, em que você não esteja presente.  Nestes casos, o meu conselho é que você programe o seu aplicativo para que restaure as configurações padrão do Access, ao ser encerrado.   As configurações, via programação, são possíveis, graças aos métodos getOption e setOption.   O getOption lê a informação de um item determinado e setOption realiza a alteração.  

Como exemplo, vamos aprender a desabilitar a mensagem padrão do Access para as consultas de ação e desabilitar a exibição da lista de Documentos Recentes. Observe na imagem abaixo que estas duas configurações estão na guia Avançado (Configurações do Cliente, no Access 2010):

Opções do Access - Guia Avanaçado

O Help do VBA lhe fornece a lista dos itens.  Você poderá abrir rapidamente o VBA pela combinação das teclas  ALT + F11.  Clique no help e digite SetOption.  Veja na figura abaixo uma parte da lista exibida:

Lista setOption

Nem todos os itens das Opções do Access são configurados pelo método setOption.  Uma parte é configurada pelas propriedades do Access e outra, somente pelo registro do Windows.

Como programar estas novas configurações das "Opções do Access".

Para alteramos estas configurações na inicialização do aplicativo, podemos utilizar um formulário de abertura ou utilizar a  macro AutoExec.  Vamos aqui utilizar uma função global, que será acionada pela macro Autoexec.

Lista setOption

Consultando a tabela fornecida pelo help do VBA, temos os nomes das opções que desejamos alterar, que são (acompanhe as setas da figura acima):

Size of MRU File List - nos permite alterar a quantidade de documentos exibidos na lista de Documentos Recentes.

Confirm Action Queries - nos permitir habilitar ou desabilitar a mensagem padrão de confirmação do Access, quando executamos consultas de ação.

Observe o código abaixo: usamos o getOption para ler a configuração do item e se não estiver de acordo com o que desejamos, realizamos a alteração com o setOption.

Public Function fncConfig()
 
'Verifica se a lista de Documentos Recentes está maior que zero
If Application.GetOption("Size of MRU File List") > 0 Then 
   'Zera a lista de Documentos Recentes
   Application.setOption "Size of MRU File List", 0
end if

'Verifica se está desabilitada a mensagem de confirmação padrão do Access para as 
'consultas de ação.
If Application.GetOption("Confirm Action Queries") = True Then
   'Desabilita a mensagem padrão do Access para as consultas de ação.
   Application.setOption "Confirm Action Queries", False
end if
 
End Function

Ao executarmos a função acima, iremos perder as configurações originais do Access do computador do cliente e isso não é desejável.  A idéia, então, é armazenarmos as configurações atuais do Access em uma tabela local, para que ao fechar o aplicativo possamos restaurar a configuração original.

Criamos uma tabela chamada de tbConfig com três campos. Dois dos campos são para armazenar as configurações atuais do Access e o campo bdAberto é para controlar se o aplicativo foi fechado corretamente. Veja a tabela na figura abaixo:

tabela tblConfig

 

Observe, com atenção, os códigos acrescentados para salvar a configuração atuais do Access, na tabela:

Public Function fncConfig()
 
'Armazenar configurações do cliente na tabela tblConfig.
'Só altera se o campo bdAberto estiver configurado como falso, pois significa 
'que o aplicativo foi fechado corretamente.
If DLookup("bdAberto", "tblConfig") = 0 Then
    'Grava quantidade de Documentos Recentes
    CurrentDb.Execute "UPDATE tblConfig SET SizeofMRUFileList = " & _ 
    Application.GetOption("Size of MRU File List")
    'Grava item confirmação de consulta
    CurrentDb.Execute "UPDATE tblConfig SET ConfirmActionQueries = " & _ 
    Application.GetOption("Confirm Action Queries")
    'Grava status de que o aplicativo está aberto
    CurrentDb.Execute "UPDATE tblConfig SET bdAberto = -1 "
End If
 
'Verifica se a lista de Documentos Recentes está maior do que zero
If Application.GetOption("Size of MRU File List") > 0 Then 
   'Zera a lista de Documentos Recentes
   Application.setOption "Size of MRU File List", 0
end if

'Verifica se está habilitado a mensagem de confirmação padrão do Access
'para as consultas de ação.
If Application.GetOption("Confirm Action Queries") = True Then
   'Desabilita a mensagem padrão do Access para as consultas de ação.
   Application.setOption "Confirm Action Queries", False
end if
 
End Function

Resta agora, o código que restaura as configurações originais do Access, ao fechar o aplicativo.  Pode ser feito no evento "Ao descarregar" do formulário principal ou pode ser feito no botão Sair de uma ribbon personalizada.  Vamos utilizar o botão Sair da ribbon personalizada. 

Veja o código utilizado na função do botão Sair da ribbon:

Public Sub fncOnAction(control As IRibbonControl)

Select Case control.Id
Case "btsair" 'Botão sair da ribbon
 
'Restaura a configuração original da lista de Documentos Recentes
'observe que o valor está sendo capturado da tabela tblConfig, através do dlookup()
Application.setOption "Size of MRU File List", DLookup("SizeofMRUFileList","tblConfig")
 
'Restaura a configuração original da mensagem padrão do Access para as consultas de ação
Application.setOption "Confirm Action Queries", DLookup("ConfirmActionQueries","tblconfig")
 
'Atualiza o status de que o aplicativo foi fechado corretamente
CurrentDb.Execute "UPDATE tblConfig SET bdAberto = 0;"
 
'Encerra o aplicativo
DoCmd.Quit acQuitSaveAll

End Select

End Sub

SURPRESA!!! A lista de Documentos Recentes não é configurada pelo setOption, no Access 2010.

Apesar de existir o comando Size of MRU File List do setOption, sua alteração não faz efeito algum sobre a lista. 

A lista dos Documentos Recentes, do Access 2010, se apresenta, na área Backstage, da guia ARQUIVO,  de duas formas: uma lista bem extensa (padrão de 17) no grupo Recente  e uma lista menor, de acesso rápido, que você pode observar na figura abaixo, envolvida pelo círculo preto.  

Documentos Recentes Access 2010

 

A lista maior, do grupo Recente, pode ser desabilitada, por completo, através de uma Ribbon personalizada. O comando usado na XML para desabilitar o grupo é este:

<tab idMso ="TabRecent" visible="false"/>

Se quiser saber tudo sobre como montar ribbons, clique aqui

Já, a lista de acesso rápido, pode ser desabilitada através do VBA , alterando a chave de Registro do Windows, chamada de Max Quick Access Display e que fica no seguinte endereço:

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\File MRU

Acompanhe, com muita calma, o código final da função fncConf() e leia atentamente os comentários:

Option Compare Database
Public reg As Object
Public CaminhoReg As String
Public MRU As Byte
-------------------------------------------------------------------------
Public Function fncConfig()
 
'Caminho em que se encontra a chave "Max Quick Access Display", no registro do Windows
CaminhoReg = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\File MRU\"
'Armazena configurações do cliente na tabela tblConfig.
'Só altera se o campo bdAberto estiver configurado como falso, pois significa 
'que o aplicativo foi fechado corretamente.
If DLookup("bdaberto", "tblConfig") = 0 Then
    'Verifica qual é a versão do Access
    If Application.Version = "12.0" Then
        'Access 2007 - Grava quantidade de Documentos Recentes
        CurrentDb.Execute "UPDATE tblConfig SET SizeofMRUFileList = " & _ 
        Application.GetOption("Size of MRU File List")
    Else
        'Access 2010 ou superior
        Set reg = CreateObject("wscript.shell")
        On Error Resume Next
        'Captura o valor da chave no registro do Windows
        MRU = reg.RegRead(CaminhoReg & "Max Quick Access Display")
        'Se a chave não estiver presente, gera um erro. 
        'Aproveito o erro para criar a chave "Max Quick Access Display"
        If Err.Number Then
          MRU = 4 'Esta quantidade de 4, da lista de acesso rápido, é o padrão do Access
          'Cria a chave no registro do Windows
          reg.RegWrite CaminhoReg & "Max Quick Access Display", MRU, "REG_DWORD"
          Err.Clear
        End If
        'Access 2010 - grava na tabela a quantidade de Documentos Recentes
        CurrentDb.Execute "UPDATE tblConfig SET SizeofMRUFileList = " & MRU
        Set reg = Nothing
    End If
    'Grava na tabela o item confirmação de consulta
    CurrentDb.Execute "UPDATE tblConfig SET ConfirmActionQueries = " & _
    Application.GetOption("Confirm Action Queries")
    'Grava status de que o aplicativo está aberto.    
    CurrentDb.Execute "UPDATE tblConfig SET bdAberto = -1 "
End If

If Application.Version = "12.0" Then
    'Access 2007 - Zera a lista de Documentos Recentes
    If Application.GetOption("Size of MRU File List") > 0 Then _
    Application.setOption "Size of MRU File List", 0
Else
    'Access 2010 - Zera a lista, de acesso rápido, dos Documentos Recentes
    Set reg = CreateObject("wscript.shell")
    MRU = reg.RegRead(CaminhoReg & "Max Quick Access Display")
    If MRU > 0 Then reg.RegWrite CaminhoReg & "Max Quick Access Display", 0, "REG_DWORD"
    Set reg = Nothing
End If

If Application.GetOption("Confirm Action Queries") = True Then _
Application.setOption "Confirm Action Queries", False

End Function

Lembrando que o objetivo é o de manter as configurações originais do Access do computador do cliente, ao encerramos o aplicativo.  Por isso, o código acabou ficando um pouco mais extenso.

Baixe o arquivo exemplo para você praticar:

Realize os seguintes testes:

Teste 1 - Abra o aplicativo, mantendo pressionada a tecla SHIFT para que o aplicativo não dispare a macro AutoExec e assim não permita alterar as configurações originais.   Execute a consulta de ação e veja a mensagem padrão do Access sendo exibida, solicitando a confirmação.

Mensagem padão do Access

 

Teste 2 - Abra o aplicativo normalmente e rode novamente a consulta.  Veja que não haverá mais mensagem alguma. 

Aproveite e veja se a lista de Documentos Recentes se encontra zerada.

Lista Documentos Recentes da área backstage

 

Sucesso e um ótimo estudo!


 

 


9 comentários

Reverton   10/11/2011 09:21:10

Olá Avelino, tudo bem. Excelente Tutorial, parabéns. Aproveitando, gostaria de ver com você e os demais experts em ACCESS a seguinte questão de configuração:
- Gosto muito da cor "Preto" no "esquema de cores" do Access. Preparei meu BD , gerei o ACCDE e quando levei para o cliente, ao abrir ele abriu com o esquema "azul" padrão. Tem como eu programar para ele abrir meu BD com o tema selecionado, ou criar um listbox e o usuário escolher o tema via código ?

Reverton   10/11/2011 09:23:45

Já descobri o artigo que queria em "Tutoriais", sobre o Esquema de cores...Valeu !

Avelino Sampaio   10/11/2011 09:26:46

Reverton,

clique na seção DICAS aqui do site e veja o artigo "Alterando cor no Access Runtime"

Sucesso!

Cláudio Machado   10/11/2011 09:26:51

Reverton veja esta dica aqui mesmo no Usando Access.
Abraços.
www.usandoaccess.com.br/dicas/dica27.asp?id=1#inicio

MARCIO MELO - RJ   10/11/2011 19:40:33

Adorei mais esse artigo e juntando o artigo mencionado, fica lindo um formulário de opções próprio, onde podemos deixar disponível apenas para o administrador ter acesso e fazer as alterações definitiva, sem dizer que o original fica guardado, o detalhe fica em quando o usuário malandrinho fecha no X superior da direita, bom... no meu manual dexei bem claro que se deve encerrar o aplicativo pelo botão SAIR (chamei de sair com segurança, pois fecha corretamente todos os objetos abertos). Estou sempre colocando em prática os aprendizados e obtendo resultados incríveis, já deixei de usar o access 2003 a tempos graças a esse espaço, e com um esforço inicial orientado passei a utilizar o Monta Ribbons e o Maestro e em 1 semana ficamos familiarizados. Deixar como exemplo ajuda online de um programa que fiz utilizando dos aprendizados aqui postados http://sic.iniciantejoomla.com/

Valeu, muito grato por mais essa aula rsrs

Sou mais Brasil!

Fernandes,WSP   08/10/2012 07:56:37

Olá Grande Avelino!
Li com atenção o seu artigo, que como sempre é elucidativo de todo e servirá para poder aplicar nos meus aplicativos.
Gostaria de aproveitar a oportunidade para solicitar o seguinte: vi na tabela de ajuda do VBA como alterar outras opções do ACCESS, mas não vi como se faz a actualização da opção: BASE DE DADOS ACTUAL/OPÇÕES DO FRISO E DA BARRA DE FERRAMENTAS/PERMITIR MENUS DE ATALHO PREDEFINIDOS.
Há uma forma de fazer a alteração dessa propriedade via VBA.

Avelino Sampaio   08/10/2012 15:35:07

Fernandes,

está na lista de propriedades do Access. Veja neste meu artigo abaixo:

http://www.usandoaccess.com.br/dicas/dica26.asp?id=1#inicio

Copie e cole o endereço, no seu navegador.

Bom estudo!

Leonardo Marques   05/06/2014 09:38:17

Avelino, como sempre esta de parabéns pelos artigos!

Adaptei o código no meu projeto e funcionou beleza! Usando o Access 2010 32Bits

Mas estou com problemas para ele funciona No Access 2010 64 Bits, da um erro ao abrir a macro AutoExec quando ele executa a função fncConfig()

O erro só ocorre quando abro no access 2010 64bits.

Ele pode ser adaptado para 64 bits?

Bia Terra   26/08/2014 08:58:01

Como sempre, aprendendo... aprendendo... e neste processo surgem dúvidas, este tutorial pode ser utilizado no access 2003 e 2007?


Envie seu comentário: