Você está na página 1de 4

Sistema Shareware por limitação de Registros https://www.usandoaccess.com.br/Dicas/sistema-shareware-por-limitaca...

Usando Access
Home Vídeos Tutoriais Dicas Ribbons Suporte Downloads Contato Artigo

Sair do login Usuário: carlos josé

1 of 4 23/06/2020 15:59
Sistema Shareware por limitação de Registros https://www.usandoaccess.com.br/Dicas/sistema-shareware-por-limitaca...

Sistema Shareware por limitação de Registros

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos
apresentados abaixo. Você pode comprar em até 10x no Cartão de Crédito.

Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.

Ofereço neste link um tutorial sobre sistema Shareware com liberação Online, mas o grau de
complexidade, o torna inviável para maioria dos usuários menos experientes em programação VBA.
Resolvi, então, criar esta versão de Shareware, que é infinitamente mais simples. A ideia é a de
limitar a quantidade de registros permitidos para cada formulário de cadastro envolvido.
Baixe o arquivo:
Clique aqui e baixe o arquivo exemplo.

Abra o formulário frmClientes, tente registrar um novo cliente e constate que o limite permitido neste
exemplo é de até 3 registros.

Limitar a entrada de registro em um formulário é bem simples, basta alterar a propriedade Permitir
adições (AllowAdditions) para Não (false).

Vamos analisar o código aplicado no evento No atual (Current) do formulário

Private Sub Form_Current()


Me.AllowAdditions = Not Me.RecordsetClone.RecordCount >= fncLimiteRegistros
End Sub

Me.RecordsetClone.RecordCount retorna a quantidade total de registros do formulário, que no


nosso exemplo está em 3. A função fncLimiteRegistros(), que veremos mais adiante, está
retornando o valor de 3. Então temos o seguinte comparativo no código:

Private Sub Form_Current()


Me.AllowAdditions = Not 3 >= 3
End Sub

A expressão 3 >=3 retorna o valor True (verdadeiro). Então teremos:


Me.AllowAdditions = Not True

Not True (não verdadeiro) retorna o valor False. A propriedade do formulário AllowAddtions
(Permitir adições) setado para False, impede a entrada de novos registros.
Agora, se tivéssemos apenas com dois registros cadastrados, teríamos a expressão 2 >= 3, o que
retornaria False.
Me.AllowAdditions = Not False
Not False (não falso) retorna o valor True (verdadeiro). A propriedade do formulário AllowAddtions
setado para True permitiria a entrada de um novo registro.

Acompanhe a seguinte seqüência:


- Ao abrir o aplicativo, a macro AutoExec dispara a função fncGerarChave()
- A função fncGerarChave() gera uma chave de 8 dígitos e a grava na tabela tblRegistro. A função
também grava na tabela o nome do Usuário e o nome do Computador. Caso haja uma troca de
Usuário ou de Computador, a função precisa gerar uma nova chave e para isso exige um novo registro
de liberação. Esse é o mecanismo bem simples para impedir a clonagem do projeto.
- É preciso informar o número de registro na tabela tblRegistro para que o aplicativo rode sem
restrição. De posse do número chave, você pode gerar o número de registro com o aplicativo
GerarRegistro.accdb. Ao gerar o número, digite-o no campo Registro da tabela tblRegistro. Abra
o formulário frmClientes e observe que está liberado para inserção de novos registros.
Veja, a função que gera a chave de 8 dígitos e que é disparada pela macro AutoExec:

Public Function fncGerarChave()


Dim blnUsuario As Boolean
Dim blnMaquina As Boolean
Dim varChave As Variant
'----------------------------------------------------------
'verifica se houve troca de Usuário ou de Computador
'----------------------------------------------------------
blnUsuario = Nz(DLookup("Usuario", "tblRegistro")) = Environ("UserName")
blnMaquina = Nz(DLookup("Maquina", "tblRegistro")) = Environ("ComputerName")

Randomize
'-----------------------------------------
'gera nova chave de comprimento 8
E a função que verifica o número de registro se está correto para liberar a limitação é a seguinte:

2 of 4 23/06/2020 15:59
Sistema Shareware por limitação de Registros https://www.usandoaccess.com.br/Dicas/sistema-shareware-por-limitaca...

'------------------------------------------
varChave = Int(Rnd * 99999999)
If Len(varChave) < 8 Then varChave = varChave & String(8 - Len(varChave), "0")
'------------------------------------------------------------------------------------
'grava chave, nome do Usuário e nome do Computador na tabela tblRegistro
'------------------------------------------------------------------------------------
If DCount("*", "tblRegistro") = 0 Then
'insere novo registro
CurrentDb.Execute "INSERT INTO tblRegistro (chave,usuario,maquina) VALUES ('" & varChave & "','" _
& Environ("UserName") & "','" & Environ("ComputerName") & "');"
ElseIf IsNull(DLookup("chave", "tblRegistro")) Or blnUsuario = False Or blnMaquina = False Then
'atualiza o registro existente
CurrentDb.Execute "UPDATE tblRegistro SET chave = '" & varChave & "',usuario ='" _
& Environ("UserName") & "',maquina ='" & Environ("ComputerName") & "';"
End If
End Function

Public Function fncLimiteRegistros() As Long


If fncRegistro(2, 4, 15674, DLookup("chave", "tblRegistro")) = Nz(DLookup("registro", "tblRegistro"), 0) Then
fncLimiteRegistros = 20000000
Else
'aqui você determina o limite máximo de cadastro, enquanto não houver registro válido.
fncLimiteRegistros = 3
End If
End Function

Desafio

Para melhorar o nível de segurança, as informações gravadas na tabela tblRegistro devem ser
criptografadas. Busque aqui no site sobre a criptografia e tente implementá-la neste projeto.

Bom estudo!

Os dez artigos mais visitados

MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access

Vídeo - Controle personalizado de Acesso de Usuários

Vídeo - Segurança máxima, usando o OPEN

Uma ajuda para quem está começando um negócio ou um projeto

Vídeo - Aprenda sobre filtragens

Adquira o kit UsandoAccess e aprenda em alta velocidade

Vídeo - Programação de relatórios - Parte 1

Desabilitando a faixa(ribbon) superior do Access

Integrando o Access com Servidor MySQL - Introdução

Como carregar o seu menu sem que ele vá para lista de suplementos

| Home | Vídeos | Tutoriais | Dicas | Ribbons | Suporte | Downloads | Contato | Artigo |

3 comentário(s)

Plauto 20/01/2018 12:17:11

Muito legal Avelino! Basta realizar as permissões em cada formulário de nosso projeto e mandar esse código junto que vai
funcionar correto? Só uma pergunta: já vi projetos que não utilizam de nenhum formulário de cadastro; Nesse caso pensei se
seria possível programar para que esse número de liberação gerado pelo aplicativo virasse a senha do formulário de login de
qualquer sistema; se a senha não conferir então o sistema avisa e pedi a senha correta do usuário; Claro que teria que
configurar para entrar primeiro no sistema para que a macro executável faça o trabalho dela, mas seria possível logo após isso
o formulário de login abrir e no local da senha ter que colocar o numero de registro de liberação? Nesse caso todo usuário novo
ao instalar em outra máquina teria que ter essa senha de acesso e dessa maneira aplicativos que não envolvam diretamente
com cadastros funcionariam também de um modo protegido; Claro só pensando não sei se pode funcionar; sou iniciante no
access e gostaria de saber a sua opinião! Mas ficou show de bola esse sistema! Obrigado

Avelino Sampaio 12/02/2017 12:15:57

Eduardo,

funcione no 2016 sim. Os passo para liberação do aplicativo

- abra a tabela tblRegistro


- anote o número do campo CHAVE
- abra a aplicativo GerarRegistro.accdb
- informe no campo o número da chave, que está na tabela tblRegistro. Clique no botão Gerar Registro
- Anote o número de registro
- volte a tabela tblRegistro e no campo REGISTRO escreva o número de registro anotado.

Bom estudo!

Eduardo 12/02/2017 07:16:07

Não funciona no access 2016.


O que deve ser inserido no campo gerar número ?

3 of 4 23/06/2020 15:59
Sistema Shareware por limitação de Registros https://www.usandoaccess.com.br/Dicas/sistema-shareware-por-limitaca...

Envie seu comentário:

Nome:

E-mail (não será exibido no comentário):

Comentário:

Digite o número três mil cento e dezenove

comentar

© 1999 Pontocom Serviços Tecnológicos

4 of 4 23/06/2020 15:59

Você também pode gostar