... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Armazenar valores na lista de propriedades do Banco de Dados

O pensamento óbvio para armazenar qualquer tipo de informação nos remete às tabelas, mas quero lhe apresentar uma alternativa interessante: o uso da lista de propriedades do Banco de Dados.  Nesta lista podemos armazenar vários tipos de informações, como por exemplo: senhas; contadores; parâmetros que definem o modo como formulários e relatórios irão se comportar e por aí vai, ficando a critério de sua imaginação e necessidade!  

O Access utiliza a lista de propriedades para configurar o Banco de Dados na inicialização.  O código abaixo exibe as propriedades do seu Banco de Dados, na janela Imediata do VBA.

Public Sub fncListaPrp()
On Error Resume Next
Dim prpNew As Property
Dim prpLoop As Property
For Each prpLoop In CurrentDb.Properties
   With prpLoop
      Debug.Print .Name & " Type: " & .Type & " Value: " & .Value
   End With
Next prpLoop
End Sub

Observe uma pequena parte da lista de propriedades:

  Nome da propriedade Tipo Valor
1 NavPane Category 4 0
2 UseMDIMode 2 0
3 ShowDocumentTabs 1 Verdadeiro
4 Build 4 423
5 NavPane Closed 4 0
6 NavPane Width 4 215
7 StartUpShowDBWindow 1 Falso
8 StartUpShowStatusBar 1 Verdadeiro
9 AllowShortcutMenus 1 Verdadeiro
10 AllowFullMenus 1 Verdadeiro
11 AllowBuiltInToolbars 1 Verdadeiro
12 AllowToolbarChanges 1 Verdadeiro
13 AllowSpecialKeys 1 Verdadeiro
14 UseAppIconForFrmRpt 1 Falso
15 AllowDatasheetSchema 1 Verdadeiro
16 Auto Compact 4 0
17 StartUpForm 10 frmLogin

 

Podemos alterar as propriedades pelo VBA.  Veja alguns exemplos:

se quisermos que o Access passe a compactar e a Reparar ao fechar o aplicativo, basta alteramos a propriedade Auto Compact para 1:

Currentdb.properties("Auto Compact").value = 1

Se quisermos definir um formulário para iniciar com o aplicativo, fazemos o seguinte:

Currentdb.properties!StartUpForm.value = "frmClientes"

Muitas destas propriedades (Auto Compact, StartUpForm, AppTitle, ...) só são criadas pelo Access, no momento que são configuradas pela Opções do Access, em Banco de Dados Atual.    

Observe, na figura abaixo, a configuração do título do aplicativo.  O Access irá criar a propriedade AppTitle para manter armazenada a informação.

LINE

 

Podemos forçar a criação da propriedade, se ela não estiver presente.   Veja a seguir, um procedimento para alterarmos o título do aplicativo, em tempo de execução! Observe que se a propriedade não existir, gera o erro 3270 e aí, então, criamos a propriedade.

Public Sub fncNovoTitulo(NovoTitulo As String)
Dim prpNovo As Property
On Error Resume Next
CurrentDb.Properties("AppTitle").Value = NovoTitulo
If Err.Number = 3270 Then 'Se a propriedade não existir acusa erro 3270
   Set prpNovo = CurrentDb.CreateProperty("AppTitle", _
                 dbText, Nz(NovoTitulo, Application.Name))
   CurrentDb.Properties.Append prpNovo
   Err.Clear
End If
Application.RefreshTitleBar
End Sub

Para alterar o título, basta executarmos: Call fncNovoTítulo("Usando Access")

Outra propriedade que precisa ser gerada, se quisermos utilizá-la, é a AllowBypassKey, que indica para o Access se a tecla SHIFT deve ou não ser ativada na inicialização do aplicativo.

Public Sub fncTeclaShift(Optional ativar As Boolean = True)
Dim prpNovo As Property
On Error Resume Next
CurrentDb.Properties("AllowBypassKey").Value = ativar
If Err.Number = 3270 Then
   Set prpNovo = CurrentDb.CreateProperty("AllowBypassKey", _
                 dbBoolean, ativar)
   CurrentDb.Properties.Append prpNovo
   Err.Clear
End If
End Sub

Para desativar a tecla SHIFT  na inicialização do Access, basta executarmos: Call fncTeclaShift(false)

Criando as propriedades de uso próprio.

O Access irá ignorar as propriedades que não reconhecer, sem acusar qualquer erro. Com isso, podemos aproveitar para criar as nossas propriedades e manter ali armazenados os valores de nosso interesse!

Criando uma propriedade para armazenar uma senha:

Dim prpNovo As Property
Set prpNovo = CurrentDb.CreateProperty("pwdMaestro", dbText, "")
CurrentDb.Properties.Append prpNovo

Depois de criada a propriedade, podemos usá-la no VBA , como se fosse uma variável:

Currentdb.properties!pwdMaestro.value = "$%2(öÆ}"

senha = Currentdb.properties!pwdMaestro.value

Montei um arquivo exemplo, já com algumas das propriedades devidamente criadas, para você poder experimentar na prática, a configuração e o uso dos valores, em tempo de execução:

Alterando o título do aplicativo

 

Baixe o exemplo:

Bom estudo!


 

 


6 comentário(s)

MARCIO MELO - RJ   23/06/2011 14:14:37

Rapaz você esta mesmo inspirado... pra mim tudo é importante e ter essa possibilidade de manipular essas configurações, a minha imaginação vai longe, pensei em automatizar o compactar e reparar a cada 15 dias, e a abertura deste formulário somente pelo Admin de id=1, fazendo aumentar ainda mais a segurança com todos os recursos disponibilizados aqui OPEN extensão .accdr e a senha criptografada nos bancos de dados. Veja como um artigo que você disponibiliza se entrega como uma luva nos projetos.

Lhe considero o meu mestre se me permitir, fico a sua disposição para colaborar em que eu poder...
minha colaboração com os internautas está em www.iniciantejoomla.com

Sou mais Brasil!

Eduardo Sousa - Portugal   24/06/2011 06:12:35

Avelino, muito obrigado por mais este grande contributo.
Muito útil esta informação.

Marco Aurélio Moraes de Oliveira Junior   24/06/2011 14:52:15

Muito Bom!!!

Será muito util.
abs,

avelino joao   24/06/2011 15:58:55

Avelino muito obrigado por partilhar mais um dos teus conhecimentos com o pessoal, estou aprender muita coisa consigo sobre o mundo do Access, você é um génio.
Tenha muito sucesso

Gilberto   17/02/2012 18:23:20

Avelino para presidente!!! já!!! Parabéns por todo o material, simplesmente incrível!!!!

Amilton   15/12/2013 13:47:33

Realmente estas opões facilitam demais a programação
Obrigado
Avelino


Envie seu comentário: