none
Como faço para interromper que um formulário seja aberto? RRS feed

  • Pergunta

  • Estou criando um sistema de validação de permissões, onde possui uma tabela de usuários com seus respectivos cargos.

    No botão "USUÁRIOS", antes de realmente abrir, eu faço uma verificação através de uma classe que criei para isso.

            public void cValidUsuario()
            {
                try
                {
                    SqlConnection conn = new SqlConnection(Properties.Settings.Default.connPub);
                    conn.Open();
                    string sql = "SELECT USUARIO FROM TBUSUARIOS WHERE USUARIO = @USUARIO AND CARGO = 'ADMINISTRADOR'";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.Parameters.Add("@USUARIO",System.Data.SqlDbType.VarChar,50).Value = fLogin.userLogado;
                    SqlDataReader dr = cmd.ExecuteReader();
                    if (dr.Read() == true)
                    {
                        conn.Close();
                    }
                    else
                    {
                        MessageBox.Show("O usuário '" + fLogin.userLogado + "'" + " não possui permissões de administrador", "Aviso do Sistema",
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        conn.Close();
                        
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

    A grande dúvida é como faço para impedir que o formulário seja aberto, após a validação de permissão ? Lembrando que caso seja administrador pode acessar, caso contrário NÃO!

            private void tmStripUsuarios_Click(object sender, EventArgs e)
            {
                _cValidUsuario.cValidUsuario(); // Validação Usuário!
                // Preciso interromper aqui, para não abrir o form!
                fUsuarios _fUsuarios = new fUsuarios();
                _fUsuarios.ShowDialog();
            }
    Obrigado pessoal! 


    segunda-feira, 13 de fevereiro de 2017 17:50

Respostas

  • Transforme seu metodo em uma funcao (void para boolean)

       public bool cValidUsuario()
            {
                try
                {
                    SqlConnection conn = new SqlConnection(Properties.Settings.Default.connPub);
                    conn.Open();
                    string sql = "SELECT USUARIO FROM TBUSUARIOS WHERE USUARIO = @USUARIO AND CARGO = 'ADMINISTRADOR'";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.Parameters.Add("@USUARIO",System.Data.SqlDbType.VarChar,50).Value = fLogin.userLogado;
                    SqlDataReader dr = cmd.ExecuteReader();
                    if (dr.Read() == true)
                    {
                        conn.Close();
                        return true;
                    }
                    else
                    {
                        MessageBox.Show("O usuário '" + fLogin.userLogado + "'" + " não possui permissões de administrador", "Aviso do Sistema",
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        conn.Close();
                        
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                return false;
            }

    depois é só fazer:

         private void tmStripUsuarios_Click(object sender, EventArgs e)
            {
               if( _cValidUsuario.cValidUsuario()); // Validação Usuário!
    {
                // Preciso interromper aqui, para não abrir o form!
                fUsuarios _fUsuarios = new fUsuarios();
                _fUsuarios.ShowDialog();
    }
            }

    ou seja, só mostra o dialogo se a validaçao retornar true


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 13 de fevereiro de 2017 18:05
    Moderador

Todas as Respostas

  • Transforme seu metodo em uma funcao (void para boolean)

       public bool cValidUsuario()
            {
                try
                {
                    SqlConnection conn = new SqlConnection(Properties.Settings.Default.connPub);
                    conn.Open();
                    string sql = "SELECT USUARIO FROM TBUSUARIOS WHERE USUARIO = @USUARIO AND CARGO = 'ADMINISTRADOR'";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.Parameters.Add("@USUARIO",System.Data.SqlDbType.VarChar,50).Value = fLogin.userLogado;
                    SqlDataReader dr = cmd.ExecuteReader();
                    if (dr.Read() == true)
                    {
                        conn.Close();
                        return true;
                    }
                    else
                    {
                        MessageBox.Show("O usuário '" + fLogin.userLogado + "'" + " não possui permissões de administrador", "Aviso do Sistema",
                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        conn.Close();
                        
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                return false;
            }

    depois é só fazer:

         private void tmStripUsuarios_Click(object sender, EventArgs e)
            {
               if( _cValidUsuario.cValidUsuario()); // Validação Usuário!
    {
                // Preciso interromper aqui, para não abrir o form!
                fUsuarios _fUsuarios = new fUsuarios();
                _fUsuarios.ShowDialog();
    }
            }

    ou seja, só mostra o dialogo se a validaçao retornar true


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 13 de fevereiro de 2017 18:05
    Moderador
  • Diego, nota MIL! explicação rápida, objetiva e fácil. Implementei e ficou bala! Boa tarde!
    segunda-feira, 13 de fevereiro de 2017 18:11
  • E eu agradeço ao Diego por ter sugerido minha resposta :)


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 13 de fevereiro de 2017 21:11
    Moderador