Fórum Login com Perfil de Acesso #457693
07/10/2013
0
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace SistemaBibliotecario
{
public partial class FrmLogin : Form
{
//responsavel pelo nivel de acesso
public static string NivelAcesso;
//responsavel por mostrar quem está conectado
public static string usuarioConectado;
//responsavel por mostrar a senha para o alerta.
public static string senhaUsuario;
public static string conexao;
public FrmLogin()
{
InitializeComponent();
}
private void FrmLogin_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'bDBiblioteca2DataSet.Perfil' table. You can move, or remove it, as needed.
this.perfilTableAdapter.Fill(this.bDBiblioteca2DataSet.Perfil);
// TODO: This line of code loads data into the 'bDBiblioteca2DataSet.Funcionario' table. You can move, or remove it, as needed.
this.funcionarioTableAdapter.Fill(this.bDBiblioteca2DataSet.Funcionario);
}
}
private void BtnEntrar_Click(object sender, EventArgs e)
{
try
{
if ((textBox1.Text != "") && (textBox2.Text != "") && (cbxPerfil.Text != ""))
{
//string de conexao
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca2.mdb");
//Responsavel pelo Comando Sql. conexao foi criado no inicio da tela. "select” tem os detalhes para conexao, nome da tb e as colunas
OleDbCommand comando = new OleDbCommand("Select * From Funcionario Where Nome = @Nome and " + "Senha = @Senha and Perfil=@Perfil", conexao);
//Parametrizar os codigos
comando.Parameters.Add("@Nome ", OleDbType.VarChar).Value = textBox1.Text;
comando.Parameters.Add("@Senha", OleDbType.VarChar).Value = textBox2.Text;
comando.Parameters.Add("@Perfil", OleDbType.VarChar).Value = cbxPerfil.Text;
//Abre a conexão e coloca reader para poder ler os dados
conexao.Open();
OleDbDataReader reader = null;
//lê as linhas de uma base de dados
reader = comando.ExecuteReader();
//Se tiver coisa pra lê faça:
if (reader.Read())
{
//Variavel usuarioConectado foi criada no inicio da tela e recebe campo usuariotextBox.Text
usuarioConectado = textBox1.Text;
//Variavel nivelAcesso foi criado no inicio da tela e recebe o campo nivelAcessoComboBox.Text
NivelAcesso = cbxPerfil.Text;
//Variavel nivelAcesso foi criado no inicio da tela e recebe o campo Senha do Usuario.Text
senhaUsuario = textBox2.Text;
//Declara a variavel que recebe o formulario FrmPrinciapal
FrmPrincipal frmp = new FrmPrincipal();
frmp.Show();
this.Hide();
}
else
{
MessageBox.Show("Usuário ou Senha Inválido !", "Acesso", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox1.Clear();
textBox2.Clear();
textBox1.Focus();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Jair Souza
Curtir tópico
+ 0Post mais votado
22/10/2013
perfil = NivelAcesso;
Sendo que NivelAcesso nem aparece no trecho de código, então provavelmente você a declarou como pública e ela está vazia. Assim, mesmo após preencher a variável "perfil" com o conteúdo da coluna que vem do banco, você passa para essa variável um valor em branco. O correto seria fazer o contrário:
NivelAcesso = perfil ;
mas na prática nem precisa, pois você pode utilizar a própria variável "perfil" para passar o valor para a propriedade do FrmPrincipal:
frmp.NivelAcesso = perfil;
Joel Rodrigues
Gostei + 1
Mais Posts
08/10/2013
Valter Furtado
Que tipo de campo é esse?? Um checkbox? tem texto nele?
Gostei + 0
08/10/2013
Jair Souza
Gostei + 0
14/10/2013
Jair Souza
Gostei + 0
17/10/2013
Jair Souza
Que tipo de campo é esse?? Um checkbox? tem texto nele?
Fiz algumas alterações, e o login está funcionando, identifica usuário, senha e se o perfil não estiver igual ao que foi cadastrado para este usuário não entra :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace SistemaBibliotecario
{
public partial class FrmLogin : Form
{
public static string NivelAcesso { get; set; }
public static string usuarioConectado { get; set; }
public static string senhaUsuario;
public static string conexao;
public FrmLogin()
{
InitializeComponent();
}
private void FrmLogin_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'bDBiblioteca2DataSet.Perfil' table. You can move, or remove it, as needed.
this.perfilTableAdapter.Fill(this.bDBiblioteca2DataSet.Perfil);
// TODO: This line of code loads data into the 'bDBiblioteca2DataSet.Funcionario' table. You can move, or remove it, as needed.
this.funcionarioTableAdapter.Fill(this.bDBiblioteca2DataSet.Funcionario);
PerfilcomboBox1.SelectedIndex = -1;
}
private void BtnEntrar_Click(object sender, EventArgs e)
{
try
{
if ((textBox1.Text != "") && (textBox2.Text != "") && (PerfilcomboBox1.Text != ""))
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca2.mdb");
OleDbCommand comando = new OleDbCommand("Select * From Funcionario Where Login = @Login And " + "Senha = @Senha And Perfil = @Perfil", conexao);
comando.Parameters.Add("@Login ", OleDbType.VarChar).Value = textBox1.Text;
comando.Parameters.Add("@Senha", OleDbType.VarChar).Value = textBox2.Text;
comando.Parameters.Add("@Perfil", OleDbType.VarChar).Value = PerfilcomboBox1.Text;
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader();
if (reader.Read())
{
usuarioConectado = textBox1.Text;
senhaUsuario = textBox2.Text;
NivelAcesso = PerfilcomboBox1.Text;
FrmPrincipal frmp = new FrmPrincipal();
frmp.Show();
this.Visible = false;
}
else
{
MessageBox.Show("Usuário ou Senha Inválido !", "Acesso", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox1.Clear();
textBox2.Clear();
textBox1.Focus();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void BtnCancelar_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void FrmLogin_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
this.ProcessTabKey(true);
e.Handled = true;
}
}
}
}
...até aí beleza, mas no form principal que coloquei o código abaixo, não faz a distinção de Nível de acesso, tipo ser for Usuário deixar enable alguns botões, independente de quem faça o login ele libera tudo...o que deve estar faltando ?
private void FrmPrincipal_Load(object sender, EventArgs e)
{
if (FrmLogin.NivelAcesso == "2")
{
toolStripButton5.Enabled = false;
perfilToolStripMenuItem.Enabled = false;
}
}
Gostei + 0
17/10/2013
Joel Rodrigues
No FrmPrincipal:
public string NivelAcesso;
No FrmLogin, para exibir o form prnicipal:
FrmPrincipal frmp = new FrmPrincipal(); frmp.NivelAcesso = NivelAcesso; //que foi preenchido com o valor do ComboBox frmp.Show();
Gostei + 0
17/10/2013
Jair Souza
Gostei + 0
17/10/2013
Joel Rodrigues
Gostei + 0
17/10/2013
Jair Souza
OleDbCommand comando = new OleDbCommand("Select * From Funcionario Where Login = @Login And " + "Senha = @Senha And Perfil = @Perfil", conexao);
comando.Parameters.Add("@Perfil", OleDbType.VarChar).Value = NivelAcesso;Gostei + 0
17/10/2013
Joel Rodrigues
Gostei + 0
17/10/2013
Jair Souza
if ((textBox1.Text != "") && (textBox2.Text != ""))
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca2.mdb");
OleDbCommand comando = new OleDbCommand("Select * From Funcionario Where Login = @Login And " + "Senha = @Senha And Perfil = @Perfil",
conexao);
comando.Parameters.Add("@Login ", OleDbType.VarChar).Value = textBox1.Text;
comando.Parameters.Add("@Senha", OleDbType.VarChar).Value = textBox2.Text;
comando.Parameters.Add("@Perfil", OleDbType.VarChar).Value = NivelAcesso;
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader();
if (reader.Read())
{
usuarioConectado = textBox1.Text;
senhaUsuario = textBox2.Text;
NivelAcesso = Perfil;
}Dá erro no código nesta duas linhas :
comando.Parameters.Add("@Perfil", OleDbType.VarChar).Value = NivelAcesso;
NivelAcesso = Perfil;
Gostei + 0
17/10/2013
Joel Rodrigues
string perfil = reader["Perfil"].ToString()
Gostei + 0
18/10/2013
Jair Souza
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace SistemaBibliotecario
{
public partial class FrmLogin : Form
{
public static string NivelAcesso { get; set; }
public static string usuarioConectado { get; set; }
public static string senhaUsuario;
public static string conexao;
public FrmLogin()
{
InitializeComponent();
}
private void FrmLogin_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'bDBiblioteca2DataSet.Perfil' table. You can move, or remove it, as needed.
this.perfilTableAdapter.Fill(this.bDBiblioteca2DataSet.Perfil);
// TODO: This line of code loads data into the 'bDBiblioteca2DataSet.Funcionario' table. You can move, or remove it, as needed.
this.funcionarioTableAdapter.Fill(this.bDBiblioteca2DataSet.Funcionario);
}
private void BtnEntrar_Click(object sender, EventArgs e)
{
try
{
if ((textBox1.Text != "") && (textBox2.Text != ""))
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca2.mdb");
OleDbCommand comando = new OleDbCommand("Select * From Funcionario Where Login = @Login And " + "Senha = @Senha And Perfil = @Perfil", conexao);
comando.Parameters.Add("@Login ", OleDbType.VarChar).Value = textBox1.Text;
comando.Parameters.Add("@Senha", OleDbType.VarChar).Value = textBox2.Text;
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader();
string perfil = reader["Perfil"].ToString();
perfil = NivelAcesso;
if (reader.Read())
{
usuarioConectado = textBox1.Text;
senhaUsuario = textBox2.Text;
FrmPrincipal frmp = new FrmPrincipal();
frmp.Show();
this.Visible = false;
}
else
{
MessageBox.Show("Usuário ou Senha Inválido !", "Acesso", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox1.Clear();
textBox2.Clear();
textBox1.Focus();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
E o do form Pricipal assim :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SistemaBibliotecario
{
public partial class FrmPrincipal : Form
{
public FrmPrincipal()
{
InitializeComponent();
}
private void FrmPrincipal_Load(object sender, EventArgs e)
{
if (FrmLogin.NivelAcesso != "1") // Diferente de 1, pois é o ID do Administrador.
{
toolStripButton5.Enabled = false;
perfilToolStripMenuItem.Enabled = false;
}
}
**Eu entendo que deve faltar Um parâmetro para "Perfil" como tem para usuário e senha, tipo assim "comando.Parameters.Add("@Perfil", OleDbType.VarChar).Value = " mas Igual a que, se para perfil não tem textbox ?;
***E mais uma dúvida, devo fazer tambem esta sua orientação :
"O ideal aí é você criar uma variável pública no FrmPrincipal e preencher ela antes de exibí-lo. Por exemplo:
No FrmPrincipal:
#Código
public string NivelAcesso;
No FrmLogin, para exibir o form prnicipal:
#Código
FrmPrincipal frmp = new FrmPrincipal();
frmp.NivelAcesso = NivelAcesso; //que foi preenchido com o valor do ComboBox
frmp.Show(); "
Gostei + 0
18/10/2013
Joel Rodrigues
Aqui cabe uma pergunta: você precisa filtrar pelo perfil? Eu creio que o filtro seja feito apenas pelo login (e senha, no caso) e o perfil seja apenas lido. Ou seja, quando o usuário faz o login, você identifica o perfil dele.
Exatamente, deve fazer da forma como eu orientei, pois você pode passar valores para o FrmPrincipal e a partir daí ficar independente do FrmLogin.
Gostei + 0
19/10/2013
Jair Souza
private void BtnEntrar_Click(object sender, EventArgs e)
{
try
{
if ((textBox1.Text != "") && (textBox2.Text != ""))
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca2.mdb");
OleDbCommand comando = new OleDbCommand("Select Perfil From Funcionario Where Login = @Login And Senha = @Senha", conexao);
comando.Parameters.Add("@Login ", OleDbType.VarChar).Value = textBox1.Text;
comando.Parameters.Add("@Senha", OleDbType.VarChar).Value = textBox2.Text;
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
if (reader.HasRows)
while(reader.Read())
{
string perfil = reader["Perfil"].ToString();
perfil = NivelAcesso;
usuarioConectado = textBox1.Text;
senhaUsuario = textBox2.Text;
FrmPrincipal frmp = new FrmPrincipal();
frmp.NivelAcesso = NivelAcesso;
frmp.Show();
this.Hide();
}
else
{
MessageBox.Show("Usuário ou Senha Inválido !", "Acesso", MessageBoxButtons.OK, MessageBoxIcon.Error);
textBox1.Clear();
textBox2.Clear();
textBox1.Focus();
}
reader.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
} E no formPrincipal
private void FrmPrincipal_Load(object sender, EventArgs e)
{
if (NivelAcesso != "1")
{
BtnFuncionarios.Enabled = false;
MenuCadPerfil.Enabled = false;
}
}Gostei + 0
20/10/2013
Joel Rodrigues
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)