Alguns alunos para os quais ministro aulas de vb.Net, quando esta próximos a apresentação de seus trabalhos, correm contra o tempo e muitas vezes se deparam com um problema que não exigiria muito esforço em circunstancias normais, mas na atual circunstancia, a da entrega de um trabalho que valerá nota, este problema parece intransponível.
Enfim, que problema é esse? É o de desenvolver uma tela de login, mas isso não chega a ser um problema, não é mesmo?
Quando tudo corre bem não, mas, quando esta tela de login passa a tomar muito tempo de desenvolvimento, isso sim se torna um problema.
Com intuito de ajudar os meus alunos do curso técnico de informática na ETEC e outros principiantes na arte de programar, desenvolvi uma tela de login simples e com conexão a banco de dados.
Usei o banco de dados access pela sua praticidade e facilidade de envio do mesmo junto com o exemplo.
Busquei colocar o código todo em uma única tela, não o separando em módulos e assim facilitar a leitura.
Tenho recebido solicitações de diversos alunos de faculdades de TI e fico feliz em poder ajuda-lós, deixem seus comentários e tentarei responde-lós rapidamente na medida do possível.
segue a tela de exemplo do login:
Esta é uma tela simples, com 3 labels (rótulos), 2 textbox (Campo texto) , 1 masktextbox (Campo texto c/ mascara), 2 botões e 1 picturebox (p/ Inserir imagem).
Com eventos, temos :
Rotina no eventos de On change dos 2 textbox (txtLogin e txtSenha)
Rotina no evento de On Click dos botões (OK e Cancel)
Rotina no Evento de On Load do formulário.
O Usuário cadastrado no banco de dados para teste é:
Usuário: rleme
Senha: leme123
Obs: não esqueça de trocar o caminho do banco de dados na “String de conexão”
Baixe aqui o exemplo.
Após se logar com usuário valido, será aberta a tela principal do sistema.
segue o código:
Imports System.Data.OleDb
Public Class frmLogin
Public conecta As New OleDbConnection
Public comando As New OleDbCommand
Public checar As OleDbDataReader
Public Sub Conectar()
conecta.Close()
conecta.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source= D:\ARQBACKUP\Meus documentos\Visual Studio 2010\Projects\2 Modulo\2 TC - Tela de login conexao access\banco\bdExemplo.mdb")
conecta.Open()
comando.Connection = conecta
End Sub
Public Function Desconectar()
conecta.Close()
Return True
End Function
Public Sub testaConexao()
Try
Conectar()
MsgBox("Conexao Realizada com sucesso")
Catch ex As Exception
Desconectar()
MsgBox("desconexao Realizada com sucesso")
End Try
End Sub
Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btnOK.Enabled = False
btnCancel.Enabled = False
cmbTipo.SelectedIndex = 0
End Sub
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
Conectar()
comando = New OleDbCommand("select senha_fun, usuario_fun, adm_fun from tabFuncionario where usuario_fun='" & _
txtUsuario.Text + "' and senha_fun='" + txtSenha.Text + "'", conecta)
checar = comando.ExecuteReader
Dim usuariobd As String = Nothing
Dim senhabd As String = Nothing
While checar.Read
If checar.Item("adm_fun") = "True" Then
MsgBox("Este usuario é administrador")
End If
senhabd = checar.Item("senha_fun").Trim
usuariobd = checar.Item("usuario_fun").Trim
End While
If usuariobd = txtUsuario.Text And senhabd = txtSenha.Text Then
Me.Visible = False
frmPrincipal.ShowDialog()
ElseIf usuariobd = Nothing Or senhabd = Nothing Then
MsgBox("Usuário ou Senha incorreto!", MsgBoxStyle.Information, "Erro")
txtUsuario.Text = ""
txtSenha.Text = ""
txtUsuario.Focus()
End If
checar.Close()
''Desconectar()
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
Me.Close()
End Sub
Private Sub txtUsuario_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtUsuario.TextChanged
If txtUsuario.Text <> Nothing Or txtSenha.Text <> Nothing Then
btnOK.Enabled = True
btnCancel.Enabled = True
Else
btnOK.Enabled = False
btnCancel.Enabled = False
End If
End Sub
Private Sub txtSenha_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSenha.TextChanged
If txtUsuario.Text <> Nothing Or txtSenha.Text <> Nothing Then
btnOK.Enabled = True
btnCancel.Enabled = True
Else
btnOK.Enabled = False
btnCancel.Enabled = False
End If
End Sub
End Class


ola rubens me desculpe por perguntar mais uma
vez mais creio que esta e a ultima duvida
se caso um usuario esqueça a senha
como faço para que ele possa recupera-la
por exemplo ele digitar alguma informação e a senha aparecer ou
coisa similar esta e minha ultima duvida agradeço
pela ajuda
ola tiago e rubens muito obrigado
funcionou perfeitamente o
programa salva sim o ultimo estado do formulário
agora tenho
uma única duvida
como faço para impedir que sejam cadastrados usuários
repetidos no banco de dados
Só tem um jeito, é você checar se o usuário já existe no banco de dados antes de fazer a inclusão dele.
Qualquer duvida mande pra gente.
abraço
olá rubens
consegui fazer a maioria do programa forma que eu queria
porem ainda quero mais duas coisas
que quando o usurário fechar o programa em seu próximo login ele continue de onde parou e caso algum usurário diferente faça login ele comece do formulário 1
e queria saber também como faço para caso o usuário esqueça a senha tipo um ele digita as informações em uma textbox
e depois o programa lhe mostre a senha
aguardo sua ajuda
Olá Weverton
Vamos para o 1º problema:
Faça o seguinte ao efetuar o login o sistema verifica em um campo na tabela que tela o usuário esta e carrega esta tela caso contrario ele abre a tela inicial.
Você pode fazer isso usando o nome da tela ou um numero para cada formulário.
Aqui você vai usar o IF aninhado… onde após a confirmação do login ele entra em outro IF.
Veja o que consegue de programação neste exemplo e me avise …
Bom dia Weverton!
Vou tentar lhe ajudar! no momento não tenho nenhum exemplo pronto que possa lhe ajudar,
Mas eu uma vez fiz uma agenda onde eu escolhia a cor de fundo dela e quando saia ela salvava a cor que eu tinha escolhido, vou tentar axar o codigo novamente na internet e lhe envio!
posso demorar um pouco pois estou com um pouco de serviço acumulado, abraço
bom dia Weverton aqui tem um exemplo de como salvar
o ultimo estado da form, axo que por isso voce pode chegar no caminho onde quer!
http://www.macoratti.net/vbn5_scu.htm
abraço
olá rubens
nao nunca fiz nenhum curso de programação
porem me intereso muito nessa area tenho livros e busco coisas na internet
para aprender cada vez mais
tenho 17 anos
ola Rubens fico grato pela
atenção
eu estou aprendendo a a mexer com o vb.net
porem já fiz algumas pequenas aplicações como a uma tela de login sem conexão ao banco de dados
e no momento estou criando um programa de perguntas e respostas
para aprender um poço mais
então vou especificar para assim fique mais fácil para que você possa me auxiliar
o programa já esta quase todo pronto
as perguntas já estão feitas
agora queria queria que a tela de login tenha conexão com um banco de dados e nessa parte que não estou conseguindo
fazer
então e gostaria também que quando um usuário fecha-se a aplicação no próximo login ele continua-se do mesmo formulário que fechou no ultimo login
ex: tem um usurário (A) e (B) cadastrados
e se o usurário (A) já estiver no formulário 4 e feche a aplicação depois que fizer login novamente ele continue do formulário 4 e caso o (B) que faça login ele comece do formulário 1 se for possível fazer isso aguardo ansiosamente a sua ajuda
muito obrigado
e se desejar posso lhe enviar a aplicação também
ola caro rubens deesculpe por mais uma pergunta
gostaria
de saber como fazer para cadastrar novos usuários.
como exemplo
criar um botao no formulario para criar um novo usuario e depois esse usuario seja capaz de fazer login
aguardo sua ajuda
Olá Weverton
Não precisa se desculpar, pode fazer quantas perguntas achar necessário.
É possível sim fazer um cadastro de usuário com tela pra adição de usuários novos,
sendo que depois este usuário possa fazer login.
Você já trabalhou com VB.Net antes?
Esta desenvolvendo algum sistema?
olá
gostaria de saber como faço
para que no campo senha apareça
aquelas bolinhas pretas ou asteriscos ao invés de
aparecer a senha mesmo
Ex: a senha e 1234 e ao invés de aparecer os números
quero que apareça ou (****) qualquer outra coisa que esconda a senha
estou montando painel de login e depois irei conecta-lo ao banco de dados desde já agradeço
Olá Weverton
selecione o textbox que vai usar pra senha, vá até properties na opção
PasswordChar coloque (*)
Veja
Duvidas me escreva
abraço
Eduardo, eu não sei qual foi o seu erro, mas uma coisa que acontece muito se vc não tomar cuidado é o erro devido a string de conexão (conecta.ConnectionString = (“Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source= D:\ARQBACKUP\Meus documentos\Visual Studio 2010\Projects\2 Modulo\2 TC – Tela de login conexao access\banco\bdExemplo.mdb”). No data source vc deve apontar o caminho correto onde está salvo o seu banco de dados.
Segui o seu tutorial, mas deu erro aqui. Sou iniciante em Visual Basic, e utilizo o Visual Studio 2010. Tem como me auxiliar? Estou cursando ainda Análise e Desenvolvimento de Sistemas.
Desde já, muito obrigado.
Eduardo oque esta dando de errado?
onde esta ocorrendo seu erro?
Olá Eduardo,
Como tiago disse, envie o erro que esta acontecendo para te ajudarmos.
abraço
Eduardo eu fiz aqui em casa como segue o exemplo e não ocorreu nenhum erro!
tenta baixar o exemplo e conferir os codigos se voce não deixou passar alguma “Virgula”
aguardo!