none
Login RRS feed

  • Pergunta

  • Caros colegas,

    tenho esta a classe login: 

    namespace Apac_v_1
    {
        public partial class FormLogin : Form
        {
            public static string Acesso;
            public bool logado = false;
    
            public FormLogin()
            {
                InitializeComponent();
            }
            public void LogarR()
            {
                SqlConnection con = new SqlConnection(Properties.Settings.Default.Setting);
    
                SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_Login WHERE usuario = @usuario AND senha = @senha AND nivelAcesso = @nivelAcesso", con);
    
                cmd.Parameters.Add("@usuario", SqlDbType.VarChar).Value = cbxUsuario.Text;
                cmd.Parameters.Add("@senha", SqlDbType.VarChar).Value = txtSenha.Text;
                cmd.Parameters.Add("@nivelAcesso", SqlDbType.VarChar).Value = cbxNivelAcesso.Text;
    
                con.Open();
    
                SqlDataReader le = null;
    
                le = cmd.ExecuteReader();
    
                if(le.Read())
                {
                    this.Hide();
                    Acesso = cbxNivelAcesso.Text;
                }
                else
                {
                    MessageBox.Show("Sistema diz:" + "\n " + "Senha ou nível de acesso não confere!");
                    
                    logado = false;
                }
            }
    
            private void btnLogar_Click(object sender, EventArgs e)
            {
                if(string.IsNullOrEmpty(txtSenha.Text))
                {
                    MessageBox.Show("Sistema diz: " + "" + "Favor informar sua senha!");
                    txtSenha.Focus();
                    return;
                }
                else
                {
                    LogarR();
                }
            }
    
            private void txtSenha_KeyDown(object sender, KeyEventArgs e)
            {
                if(e.KeyCode == Keys.Enter)
                {
                    LogarR();
                }
            }
    
            private void cbxNivelAcesso_KeyDown(object sender, KeyEventArgs e)
            {
                if(e.KeyCode == Keys.Enter)
                {
                    LogarR();
                }
            }
    
            private void cbxUsuario_Enter(object sender, EventArgs e)
            {
                Validar val = new Validar();
                cbxUsuario.DataSource = val.listaUsuario();
                cbxUsuario.DisplayMember = "usuario";
            }
    
            private void cbxNivelAcesso_Enter(object sender, EventArgs e)
            {
                Validar val = new Validar();
                cbxNivelAcesso.DataSource = val.listaNivel();
                cbxNivelAcesso.DisplayMember = "nivelAcesso";
            }
        }
    }
    

    E esta classe validar:

    namespace Apac_v_1
    {
        public class Validar
        {
            public const string _strCon = @"Data Source=.\SQLEXPRESS;Initial Catalog=Apac_v_1; Integrated Security=True";
            private string vsql = "";
    
            SqlConnection objCon = null;
    
            private bool conectar()
            {
                objCon = new SqlConnection(_strCon);
                try
                {
                    objCon.Open();
                    return true;
                }
                catch
                {
                    return false;
                }
            }
            private bool desconectar()
            {
                if (objCon.State != ConnectionState.Closed)
                {
                    objCon.Close();
                    objCon.Dispose();
                    return true;
                }
                else
                {
                    objCon.Dispose();
                    return false;
                }
            }
            public List<string> listaNivel()
            {
                vsql = "SELECT nivelAcesso FROM tbl_nivel_Acesso";
                SqlCommand objcmd = null;
                List<string> nivel_Acesso = new List<string>();
    
                if (this.conectar())
                {
                    try
                    {
                        objcmd = new SqlCommand(vsql, objCon);
                        SqlDataReader dr = objcmd.ExecuteReader();
    
                        while (dr.Read())
                        {
                            nivel_Acesso.Add(dr["nivelAcesso"].ToString());
                        }
                        return nivel_Acesso;
                    }
                    catch (SqlException erro)
                    {
                        throw erro;
                    }
                    finally
                    {
                        this.desconectar();
                    }
                }
                else
                {
                    return null;
                }
            }
            public List<string> listaUsuario()
            {
                vsql = "SELECT  usuario FROM tbl_Login";
                
                SqlCommand objcmd = null;
                List<string> Usuario = new List<string>();
    
                if(this.conectar())
                {
                    try
                    {
                        objcmd = new SqlCommand(vsql, objCon);
    
                        SqlDataReader dr = objcmd.ExecuteReader();
    
                        while(dr.Read())
                        {
                            Usuario.Add(dr["Usuario"].ToString());
                        }
                        return Usuario;
                    }
                    catch(SqlException erro)
                    {
                        throw erro;
                    }
                    finally
                    {
                        this.desconectar();
                    }
                }
                else
                {
                    return null;
                }
            }
        }
    }

    E a classe Program, onde seria chamado a tela de login, e após a validação de usuário, senha e nivel de acesso, seria chamado a tela de menu, mas não acontece isso. 

    namespace Apac_v_1
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //Application.Run(new FormLogin());
    
                FormLogin frmLogin = new FormLogin();
    
                frmLogin.ShowDialog();
    
                if(frmLogin.logado)
                {
                    Application.Run(new FormMenu());
                }
                
            }
        }
    }

    Poderia me informar o que estou fazendo de errado? Agradeço.


    kildare

    domingo, 3 de julho de 2016 14:46

Respostas

  • kjgomes ... a olho não parece nada errado. Quando você executa que erro da? Execute debugando e verifique onde (qual linha acontece o erro). Imagino que você pode ter erros para conectar (provavelmente a string de conexão pode estar errado) ou se vc tiver problema para logar, os campos usuário/senha podem não estar definidos corretamente ou o usuário não existe ... preciso saber onde está dando erro na sua execução para entender.
    segunda-feira, 4 de julho de 2016 11:45

Todas as Respostas

  • kjgomes ... a olho não parece nada errado. Quando você executa que erro da? Execute debugando e verifique onde (qual linha acontece o erro). Imagino que você pode ter erros para conectar (provavelmente a string de conexão pode estar errado) ou se vc tiver problema para logar, os campos usuário/senha podem não estar definidos corretamente ou o usuário não existe ... preciso saber onde está dando erro na sua execução para entender.
    segunda-feira, 4 de julho de 2016 11:45
  • Bom dia,

    Por falta de retorno, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma nova thread.

    Atenciosamente


    Thales F Quintas

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 7 de julho de 2016 13:16