none
Como capturar a Id de um usuario num form usando user control?

    Question

  • Tem um pequeno projeto login usuario e senha após logado usa um botão obter id

    para pegar o id do usuario?

    Monday, May 14, 2012 9:43 PM

Answers

  • Hmm acho que entendi...vc tem uma tela de login (user control) que verifica se o usuario existe no banco certo ?! e você quer que tenha um botão (obterID, que fica no windows form normal?) que quando clicado, se o usuario existe, tem que mostrar o nome ?!

    Bom abaixo um código para verificar o login, eu preferi utilizar dois DataAdapter e DataTable (user e pass). Pode notar também que o meu retorno do Login vai tudo para a string STATUS, isso eu vejo como necessário para eu depois conseguir usar o oBterID

    private string status = "";
            public string Status
            {
                get { return status; }
            }
    
            private void cmdEntrar_Click(object sender, EventArgs e)
            {
                lblStatusSenha.Text = "";
                lblStatusUsuario.Text = "";
                
                try
                {
                    string banco = "";
                    banco = "Server=NOME-PC;DATABASE=BANCO;UID=USER;PWD=PASS";
    
                    SqlConnection cx = new SqlConnection();
                    cx.ConnectionString = banco;
                    cx.Open();
    
                    DataTable dtUsuario = new DataTable();
                    DataTable dtSenha = new DataTable();
    
                    string sql = "";
                    sql += " SELECT Usuario FROM Usuarios ";
                    sql += " WHERE Usuario = '" + txtUsuario.Text + "' ";
    
                    string sql2 = "";
                    sql2 += " SELECT Senha FROM Usuarios ";
                    sql2 += " WHERE Senha = '" + txtSenha.Text + "' ";
    
                    SqlDataAdapter daUsuario = new SqlDataAdapter(sql, cx);
                    daUsuario.Fill(dtUsuario);
    
                    SqlDataAdapter daSenha = new SqlDataAdapter(sql2, cx);
                    daSenha.Fill(dtSenha);
    
                    if (dtUsuario.Rows.Count != 1 && dtSenha.Rows.Count == 1)
                    {
                        lblStatusUsuario.Text = "Introduza um Usuário válido!";
                        status = "Usuário " + txtUsuario.Text + " não é possivel entrar";
                    }
                    else if (dtUsuario.Rows.Count == 1 && dtSenha.Rows.Count != 1)
                    {
                        lblStatusSenha.Text = "Introduza uma Senha válida!";
                        status = "Usuário " + txtUsuario.Text + " não é possivel entrar";
                    }
                    else if (dtUsuario.Rows.Count != 1 || dtSenha.Rows.Count != 1)
                    {
                        lblStatusUsuario.Text = "Introduza um Usuário válido!";
                        lblStatusSenha.Text = "Introduza uma Senha válida!";
                        status = "Usuário " + txtUsuario.Text + " não é possivel entrar";
                    }
                    else
                    {
                        lblStatusUsuario.Text = "Usuário e Senha OK";
                        lblStatusSenha.Text = "Usuário Conectado";
                        status = "Usuário " + txtUsuario.Text + " encontrado";
                    }               
                }
                catch (Exception x)
                {
                    MessageBox.Show(x.Message);
                }
            }

    Abaixo código do meu obterID:

    private void cmdObterID_Click(object sender, EventArgs e) { string final = ""; int pos = 0; final = login1.Status; //aqui eu pego a variavel string STATUS do meu usercontrol (que eu configurei acima) pos = final.IndexOf("encontrado"); //aqui eu verifico se existe a palavra "encontrado" no meu status do código acima

    if (pos > 0) //se existir a palavra de que o user foi encontrado ele executa o código abaixo mostrando msg de sucesso { lblObterID.Text = final; frm2 frm2 = new frm2(); frm2.Show(); //e abre um outro form. } else { lblObterID.Text = "Falha no Login, tente novamente"; } }

    Esse é de um projetinho parecido com o seu que eu tinha aqui, me avise se tiver duvidas..


    Atenciosamente, Guilherme. Caso esta resposta foi útil para seu problema, por favor, marque como mesma. Caso ela apenas responda sua pergunta corretamente, não esqueça de marca-lá.

    • Marked as answer by SFreddi Tuesday, May 15, 2012 11:43 PM
    Tuesday, May 15, 2012 1:01 PM

All replies

  • Vc esta usando banco de dados?

    Voce ja tem o usercontrol pronto?


    Se a postagem for UTIL,pontue; Se a postagem solucionar o problema MARQUE COMO RESPOSTA.

    Monday, May 14, 2012 10:35 PM
  • Estou usando Sql, um banco usuario, com um IdUsuario usuario e senha,

    a Id é autoincrement não aceita nulo, quanto ao user control estou fazendo.

    o código pra logar é este:

    SqlConnection c = new SqlConnection();           

    string con = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\SysDB\Usuario.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

                c.ConnectionString = con;

                c.Open();           

               string usuario = "";           

               string senha = "";           

               string sql = "";          

               try {

                    usuario = txtUsuario.Text;

                    senha = txtSenha.Text;

        sql += @"Select IdUsuario, Usuario, Senha from Usuario Where Usuario = usuario AND Senha = senha";

        SqlCommand cd = new SqlCommand(sql, c);              

        SqlDataReader dr = cd.ExecuteReader();               

                if (dr.Read())

                    {

                        usuario = dr["Usuario"].ToString();

                         senha = dr["Senha"].ToString();
                     

                       }               

                       MessageBox.Show("Logado");

                }          

                catch (Exception x)

                {               

                  MessageBox.Show(x.Message);

                }

                c.Close();

            }

        }

    }


    • Edited by SFreddi Monday, May 14, 2012 11:01 PM
    Monday, May 14, 2012 10:40 PM
  • Hmm acho que entendi...vc tem uma tela de login (user control) que verifica se o usuario existe no banco certo ?! e você quer que tenha um botão (obterID, que fica no windows form normal?) que quando clicado, se o usuario existe, tem que mostrar o nome ?!

    Bom abaixo um código para verificar o login, eu preferi utilizar dois DataAdapter e DataTable (user e pass). Pode notar também que o meu retorno do Login vai tudo para a string STATUS, isso eu vejo como necessário para eu depois conseguir usar o oBterID

    private string status = "";
            public string Status
            {
                get { return status; }
            }
    
            private void cmdEntrar_Click(object sender, EventArgs e)
            {
                lblStatusSenha.Text = "";
                lblStatusUsuario.Text = "";
                
                try
                {
                    string banco = "";
                    banco = "Server=NOME-PC;DATABASE=BANCO;UID=USER;PWD=PASS";
    
                    SqlConnection cx = new SqlConnection();
                    cx.ConnectionString = banco;
                    cx.Open();
    
                    DataTable dtUsuario = new DataTable();
                    DataTable dtSenha = new DataTable();
    
                    string sql = "";
                    sql += " SELECT Usuario FROM Usuarios ";
                    sql += " WHERE Usuario = '" + txtUsuario.Text + "' ";
    
                    string sql2 = "";
                    sql2 += " SELECT Senha FROM Usuarios ";
                    sql2 += " WHERE Senha = '" + txtSenha.Text + "' ";
    
                    SqlDataAdapter daUsuario = new SqlDataAdapter(sql, cx);
                    daUsuario.Fill(dtUsuario);
    
                    SqlDataAdapter daSenha = new SqlDataAdapter(sql2, cx);
                    daSenha.Fill(dtSenha);
    
                    if (dtUsuario.Rows.Count != 1 && dtSenha.Rows.Count == 1)
                    {
                        lblStatusUsuario.Text = "Introduza um Usuário válido!";
                        status = "Usuário " + txtUsuario.Text + " não é possivel entrar";
                    }
                    else if (dtUsuario.Rows.Count == 1 && dtSenha.Rows.Count != 1)
                    {
                        lblStatusSenha.Text = "Introduza uma Senha válida!";
                        status = "Usuário " + txtUsuario.Text + " não é possivel entrar";
                    }
                    else if (dtUsuario.Rows.Count != 1 || dtSenha.Rows.Count != 1)
                    {
                        lblStatusUsuario.Text = "Introduza um Usuário válido!";
                        lblStatusSenha.Text = "Introduza uma Senha válida!";
                        status = "Usuário " + txtUsuario.Text + " não é possivel entrar";
                    }
                    else
                    {
                        lblStatusUsuario.Text = "Usuário e Senha OK";
                        lblStatusSenha.Text = "Usuário Conectado";
                        status = "Usuário " + txtUsuario.Text + " encontrado";
                    }               
                }
                catch (Exception x)
                {
                    MessageBox.Show(x.Message);
                }
            }

    Abaixo código do meu obterID:

    private void cmdObterID_Click(object sender, EventArgs e) { string final = ""; int pos = 0; final = login1.Status; //aqui eu pego a variavel string STATUS do meu usercontrol (que eu configurei acima) pos = final.IndexOf("encontrado"); //aqui eu verifico se existe a palavra "encontrado" no meu status do código acima

    if (pos > 0) //se existir a palavra de que o user foi encontrado ele executa o código abaixo mostrando msg de sucesso { lblObterID.Text = final; frm2 frm2 = new frm2(); frm2.Show(); //e abre um outro form. } else { lblObterID.Text = "Falha no Login, tente novamente"; } }

    Esse é de um projetinho parecido com o seu que eu tinha aqui, me avise se tiver duvidas..


    Atenciosamente, Guilherme. Caso esta resposta foi útil para seu problema, por favor, marque como mesma. Caso ela apenas responda sua pergunta corretamente, não esqueça de marca-lá.

    • Marked as answer by SFreddi Tuesday, May 15, 2012 11:43 PM
    Tuesday, May 15, 2012 1:01 PM
  • Seratti,

    Na verdade preciso do Numero em que ele fica gravado no banco,

    o DataTable multiplo está deixando validar qualquer usuario com

    qualquer senha validad do banco.


    • Edited by SFreddi Tuesday, May 15, 2012 4:29 PM
    Tuesday, May 15, 2012 1:31 PM
  • Certo vamos lá...em relação ao campo de validar Login use esta verificação:

     if (dtUsuario.Rows.Count != 1 || dtSenha.Rows.Count != 1)
                    {
                        lblStatus.Text = "Usuário ' " + txtUsuario.Text + " ' não é possivel entrar";
                    }
                    else
                    {
                       lblStatusUsuario.Text = "Usuário e Senha OK";
                       lblStatusSenha.Text = "Usuário Conectado";
                       status = "Usuário " + txtUsuario.Text + " encontrado";
                    }

    Voltei agora do almoço e estou vendo alguma forma no projeto que eu tenho aqui de como pegar o ID de quem esta logando...


    Atenciosamente, Guilherme. Caso esta resposta foi útil para seu problema, por favor, marque como mesma. Caso ela apenas responda sua pergunta corretamente, não esqueça de marca-lá.

    Tuesday, May 15, 2012 4:46 PM
  •  Seratti, aqui está o codigo funcionando, fiz umas alterações,

               public partial class Login : UserControl

              {       

              public Login()

            {

                InitializeComponent();

            }       

             private string status = "";       

             public string Status

            {           

             get { return status; }

            }       

             private void cmdEntrar_Click(object sender, EventArgs e)

            {

                lblStatusSenha.Text ="";

              lblStatusUsuario.Text = "";

              try

                {               

                string banco = "";

      banco = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\SysDB\Usuario.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

                    SqlConnection cx = new SqlConnection();

                    cx.ConnectionString = banco;

                    cx.Open();               

                    DataTable dt = new DataTable();               

                    string sql = "";

                    sql += " SELECT IdUsuario, Usuario, Senha FROM Usuario ";

                    sql += " WHERE Usuario = '" + txtUsuario.Text + "' AND Senha = '" + txtSenha.Text + "'";

                    SqlDataAdapter da = new SqlDataAdapter(sql, cx);

                    da.Fill(dt);               

                    foreach (DataRow dtrow in dt.Rows)

                    {                   

                    int IdUsuario = Convert.ToInt32(dtrow["IdUsuario"]);                  

                     if (dt.Rows.Count != 1 && dt.Rows.Count != 1 && dt.Rows.Count == 1)

                        {

                            lblStatusUsuario.Text = "Introduza um Usurio valido!";

                            status = "Usurio " + txtUsuario.Text + " no possivel entrar";

                        }    

                        else if (dt.Rows.Count == 1 && dt.Rows.Count != 1 && dt.Rows.Count != 1)

                        {

                            lblStatusSenha.Text = "Introduza uma Senha valida!";

                             status = "Usurio " + txtUsuario.Text + " no possivel entrar";

                        }                   

                         else if (dt.Rows.Count != 1 || dt.Rows.Count != 1 || dt.Rows.Count != 1)

                        {

                            lblStatusUsuario.Text = "Introduza um Usurio valido!";

                            lblStatusSenha.Text = "Introduza uma Senha vlida!";

                            status = "Usurio " + txtUsuario.Text + " no possivel entrar";

                        }

                        else

                        {

                            lblStatusUsuario.Text = "Usurio e Senha OK";

                            lblStatusSenha.Text = "Usurio Conectado";

                            status = "IdUsuario " + IdUsuario.ToString() + " encontrado";

                        }

                    }

               }        

                catch (Exception x)

                {               

                 MessageBox.Show(x.Message);

                }

            }    

        }

    }

    Tuesday, May 15, 2012 11:40 PM
  • Aqui está o codigo do BtnObter Id,

         public partial class Form1 : Form

        public Form1()

       {

                InitializeComponent();

            }       

            private void cmdObterId_Click(object sender, EventArgs e)

            {           

             string final = "";           

             int pos = 0;

             final = login1.Status;

            pos = final.IndexOf("encontrado"); 

                    lblStatus.Text = final;              

                }     

               {

        {

    Tuesday, May 15, 2012 11:42 PM