Login orientado a objetos + Banco de dados Access

Login orientado a objetos + Banco de dados Access, quem nunca precisou de uma tela de login para permissões de acesso que atire a primeira pedra. Se você necessita proteger algumas guias do usuário, nada melhor do que uma tela de login. Esse tipo de permissão é muito importante para qualquer sistema, principalmente quando o programa é usado por mais de uma pessoa.

Aqui no site nós já descrevemos um artigo a respeito desse tema, porém foi um exemplo bem simples, vou deixar o link aqui caso queira ler. Lá mostramos a estrutura básica para criar um login de usuário, mas não usamos intervalos da planilha e muito menos banco de dados como fonte de registros.

Hoje vamos mostrar como você pode criar esse login, mas dessa vez usando o banco de dados access. Também implementaremos esse login orientada a objetos. Se ficou interessado nesse assunto então continue lendo esse artigo, lembre-se de curti, compartilhar e comentar essa postagem.

Preparando nosso projeto login de usuário

O primeiro passo que você precisa fazer é criar seu formulário, assim como da imagem a seguir. Note que também adicionamos 2 classes ClsConexao ClsLogin, iremos usa-las para implementar nosso projeto orientado a objetos.

Para fazer o acesso ao nosso banco de dados, lembre-se de adicionar a referência microsoft activex data objects 2.8 library. Caso não saiba fazer isso, acesse esse link aqui onde mostro como habilitar essa referência no Excel!

Para esse exemplo nós criamos um banco de dados chamado DataBase, lembre de salvá-lo na extensão mdb. Se você não sabe como realizar essa tarefa, acesse esse link aqui onde mostramos como fazer isso. Nesse banco de dados criamos uma tabela com o nome de TB_Usuario_Login, essa tabela vai conter os seguintes campos:

Pronto agora que já preparamos os primeiros passos de nosso projeto, podemos começar a coda rs…

Login de usuário orientado a objetos + DataBase Access

Vamos começar pela conexão com o banco de dados, dentro da nossa classe ClsConexão cole o código a seguir:

Private Type ClassType
Con     As ADODB.Connection
Rs      As ADODB.Recordset
Path    As String
End Type
Private This As ClassType
Private Sub Class_Initialize()
Set This.Con = New ADODB.Connection: Set This.Rs = New ADODB.Recordset
End Sub
Private Sub Class_Terminate()
Set This.Con = Nothing: Set This.Rs = Nothing
End Sub
Public Sub OpenCon()
This.Path = ThisWorkbook.Path & "/DataBase.mdb"
This.Con.Open "Provider=Microsoft.jet.oledb.4.0;Data Source =" & This.Path
End Sub
Public Sub CloseCon()
Set This.Con = Nothing
End Sub
Public Property Get Con() As ADODB.Connection
Set Con = This.Con
End Property
Public Property Let Con(Value As ADODB.Connection)
This.Con = Value
End Property
Public Property Get Rs() As ADODB.Recordset
Set Rs = This.Rs
End Property
Public Property Let Rs(Value As ADODB.Recordset)
This.Rs = Value
End Property

Agora vá até seu formulário de login e no botão Entrar, em seu evento clique cole o seguinte código:

Private Login As ClsLogin
Private Sub BtEntrar_Click()
Set Login = New ClsLogin
With Login
.Usuario = Me.TxtUsuario.Text
.Senha = Me.TxtSenha.Text
.Usuario_Entrar
End With
Set Login = Nothing
End Sub

Para o projeto não ficar muito extenso nós não implementamos todos os métodos de um usuário. Portanto, para você poder testar esse exemplo você deve incluir os registros no banco de dados manualmente.

Agora veja o resultado depois do projeto criado e fazendo os devido acesso ao banco de dados Access.

Estrutura da classe ClsConexão

Nós construímos as estruturas da nossa classe ClsConexao que possui 3 atributos: Con, Rs, Path. Note que nesse modelo nós aplicamos o Type assim como citado em nosso artigo módulos de classe no vba. Dentro desse type foi adicionado todos os atributos da classe, e somente ele receberá o modificador de acesso Private.

Na programação orientada a objeto sabemos que o This representa ou referencia o próprio objeto, então criamos uma variável e referenciamos ao nosso Type. Agora todos os atributos da classe serão acessado pelo o This.

Login orientado a objetos

Nessa classe nós temos 4 métodos e dois deles são construtores da própria classe. Esses construtores são métodos implementados por uma interface interna do vba e eles são chamados automaticamente sempre que a classe é instanciada ou destruída.

  • Class_Initialize()
  • Class_Terminate()

Através desses métodos nós instanciamos o objeto ADODB, que são representados pelas propriedades Con e Rs. Essas propriedades serão instanciadas e destruídas por meio desses métodos. Muitos programadores costumam realizar essa implementação no topo do código, mas essa não é uma boa prática no VBA.

Por isso prefiro instanciar o objeto quado a classe realmente for inicializada.

Os outros métodos foram criamos por nós, o trabalho deles é chamar a função open e close do objeto Connection. Por fim temos os métodos assessores que foram implementados na classe, para que outras partes do sistema tenham acesso aos atributos da conexão.

Login orientado a objetos

Todos os atributos da classe são privados por isso temos a necessidade desses métodos. Então note que o atributo Path não implementa os métodos assessores pois nesse caso não precisamos usa-lo de fora da classe. O atributo Path representa o caminho do banco de dados, ele será referenciado no método OpenCon da classe.

É muito importante que você tenha essa noção, para não descrever métodos desnecessários, essa é aquela velha regra do bom senso rs.

Login orientado a objetos – Estrutura da classe ClsLogin

O desenho dessa classe segue o mesmo modelo da classe ClsConexão, mudando somente as propriedades e métodos implementados. Observe que temos dois atributos Usuário e Login que são definidos dentro do type, e o atributo DB ficando fora do type. Não sei se você percebeu mas a propriedade DB representa o objeto de conexão da classe ClsConexão, por isso não foi definida dentro do type.

Login orientado a objetos

Também criamos um método publico para classe, e ele foi chamado de Usuario_EntrarEsse método será acionado pelo sistema, sempre que uma pessoa solicitar o acesso. Dentro desse método nós descrevemos todas as regras do login, através dele que faremos todas as validações e retorno da solicitação do usuário.

Login orientado a objetos

Assim como na classe ClsConexão também temos que implementar os métodos assessores, pois os atributos da classe também são privados e não possuem acesso direto.

Login orientado a objetos

Por fim, agora temos a implementação final que será feita dentro do nosso UserForm, nele definimos o atributo Login que representará o objeto ClsLogin. Nesse ponto, nós instanciamos o objeto e passamos o valores do formulário para as propriedades da classe. Portanto, será encargo dela fazer todo o trabalho daqui pra frente.

Login orientado a objetos

Bem espero que vocês tenham gostado e se tiverem dúvidas deixem aqui nos comentários, prometo responder em breve. Para complemento desse artigo, recomendo que leiam nosso post sobre módulos de classe no vba. Não se esqueçam de curti compartilhar essa postagem, pois estão trazendo grande força para nosso canal!

→Download do Projeto de Referência do Artigo!

Veja mais…

Sistema de Controle Financeiro Completo em Excel 4.0

Planilhas para a gestão do seu negócio em Excel

Gerar orçamento em Excel e salvar em PDF

Planilha simulador de parcelamento em Excel